Java MKS API сбой
Рассказ: я пытаюсь подключиться к целостности с помощью Java MKS API, а затем выполнить команду "si viewsandbox". Связь с целостностью и выполнением команды работает нормально, пока я не попробую ее с крошечными песочницами. Если я попробую команду viewsandbox с огромной песочницей, я получу следующий журнал ошибок:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000, pid=4984, tid=3628
#
# JRE version: (7.0_40-b43) (build )
# Java VM: Java HotSpot(TM) Client VM (24.0-b56 mixed mode windows-x86 )
# Problematic frame:
# C 0x00000000
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x0054dc00): JavaThread "main" [_thread_in_Java, id=3628, stack(0x010a0000,0x10aa0000)]
siginfo: ExceptionCode=0xc0000005, ExceptionInformation=0x00000008 0x00000000
Registers:
EAX=0x00100000, EBX=0x52aada90, ECX=0x12aa0da0, EDX=0x00500001
ESP=0x10a9edf0, EBP=0x10a9ee18, ESI=0x10a9edf4, EDI=0x10a9ee1c
EIP=0x00000000, EFLAGS=0x00010216
Top of Stack: (sp=0x10a9edf0)
0x10a9edf0: 10aa347b 12aa0da0 10a9edf8 52ab76ab
0x10a9ee00: 10a9ee1c 52b0d648 00000000 52ab76e8
0x10a9ee10: 10a9edf4 10a9ee20 10a9ee3c 10aa03d7
0x10a9ee20: 10a9ee70 10a9ee4c 639be6e2 00001f80
0x10a9ee30: 10aa0372 0054dc00 52ab76e8 10a9eebc
0x10a9ee40: 639bee1a 10a9ee70 10a9ef44 0000000a
0x10a9ee50: 52ab76e8 10aa9800 10a9ef54 00000000
0x10a9ee60: 0054dc00 0054dc00 0054dc00 00000004
Instructions: (pc=0x00000000)
0xffffffe0:
Register to memory mapping:
EAX=0x00100000 is an unknown value
EBX=0x52aada90 is an oop
{method}
- klass: {other class}
ECX=0x12aa0da0 is an oop
java.lang.Class
- klass: 'java/lang/Class'
EDX=0x00500001 is an unknown value
ESP=0x10a9edf0 is pointing into the stack for thread: 0x0054dc00
EBP=0x10a9ee18 is pointing into the stack for thread: 0x0054dc00
ESI=0x10a9edf4 is pointing into the stack for thread: 0x0054dc00
EDI=0x10a9ee1c is pointing into the stack for thread: 0x0054dc00
Stack: [0x010a0000,0x10aa0000], sp=0x10a9edf0, free space=255995k
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
=>0x0054dc00 JavaThread "main" [_thread_in_Java, id=3628, stack(0x010a0000,0x10aa0000)]
Other Threads:
0x56e40c00 VMThread [stack: 0x57060000,0x570b0000] [id=5364]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 157248K, used 2795K [0x12aa0000, 0x1d540000, 0x27ff0000)
eden space 139776K, 2% used [0x12aa0000, 0x12d5ae88, 0x1b320000)
from space 17472K, 0% used [0x1b320000, 0x1b320000, 0x1c430000)
to space 17472K, 0% used [0x1c430000, 0x1c430000, 0x1d540000)
tenured generation total 349568K, used 0K [0x27ff0000, 0x3d550000, 0x52aa0000)
the space 349568K, 0% used [0x27ff0000, 0x27ff0000, 0x27ff0200, 0x3d550000)
compacting perm gen total 12288K, used 518K [0x52aa0000, 0x536a0000, 0x56aa0000)
the space 12288K, 4% used [0x52aa0000, 0x52b21aa8, 0x52b21c00, 0x536a0000)
No shared spaces configured.
Card table byte_map: [0x56aa0000,0x56cd0000] byte_map_base: 0x56a0ab00
Polling page: 0x001c0000
Code Cache [0x10aa0000, 0x10ae8000, 0x12aa0000)
total_blobs=39 nmethods=0 adapters=18 free_code_cache=32499Kb largest_free_block=33278912
Compilation events (0 events):
No events
GC Heap History (0 events):
No events
Deoptimization events (0 events):
No events
Internal exceptions (0 events):
No events
Events (10 events):
Event: 0.015 loading class 0x00b0bd30 done
Event: 0.015 loading class 0x00b0bd10 done
Event: 0.015 loading class 0x00b16d50
Event: 0.015 loading class 0x00b16d50 done
Event: 0.015 loading class 0x00b13e28
Event: 0.015 loading class 0x00b13e28 done
Event: 0.015 loading class 0x00b1af98
Event: 0.015 loading class 0x00b1af98 done
Event: 0.015 loading class 0x00b1afc0
Event: 0.015 loading class 0x00b1afc0 done
Dynamic libraries:
0x002e0000 - 0x0030f000 C:\Program Files\Integrity\IntegrityClient\jre\bin\java.exe
0x77090000 - 0x77210000 C:\Windows\SysWOW64\ntdll.dll
0x754b0000 - 0x755c0000 C:\Windows\syswow64\kernel32.dll
0x76c40000 - 0x76c87000 C:\Windows\syswow64\KERNELBASE.dll
0x76710000 - 0x767b0000 C:\Windows\syswow64\ADVAPI32.dll
0x76b90000 - 0x76c3c000 C:\Windows\syswow64\msvcrt.dll
0x74f60000 - 0x74f79000 C:\Windows\SysWOW64\sechost.dll
0x74c10000 - 0x74d00000 C:\Windows\syswow64\RPCRT4.dll
0x74bb0000 - 0x74c10000 C:\Windows\syswow64\SspiCli.dll
0x74ba0000 - 0x74bac000 C:\Windows\syswow64\CRYPTBASE.dll
0x764c0000 - 0x765c0000 C:\Windows\syswow64\USER32.dll
0x74d00000 - 0x74d90000 C:\Windows\syswow64\GDI32.dll
0x765c0000 - 0x765ca000 C:\Windows\syswow64\LPK.dll
0x75350000 - 0x753ed000 C:\Windows\syswow64\USP10.dll
0x73300000 - 0x7349e000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\COMCTL32.dll
0x75420000 - 0x75477000 C:\Windows\syswow64\SHLWAPI.dll
0x74f00000 - 0x74f60000 C:\Windows\system32\IMM32.DLL
0x75280000 - 0x7534c000 C:\Windows\syswow64\MSCTF.dll
0x74880000 - 0x748c6000 C:\PROGRA~2\Sophos\SOPHOS~1\SOPHOS~1.DLL
0x76230000 - 0x76235000 C:\Windows\syswow64\PSAPI.DLL
0x65810000 - 0x658ce000 C:\Program Files\Integrity\IntegrityClient\jre\bin\msvcr100.dll
0x63880000 - 0x63c00000 C:\Program Files\Integrity\IntegrityClient\jre\bin\client\jvm.dll
0x6c600000 - 0x6c607000 C:\Windows\system32\WSOCK32.dll
0x76b50000 - 0x76b85000 C:\Windows\syswow64\WS2_32.dll
0x77060000 - 0x77066000 C:\Windows\syswow64\NSI.dll
0x73500000 - 0x73532000 C:\Windows\system32\WINMM.dll
0x6f8b0000 - 0x6f8bc000 C:\Program Files\Integrity\IntegrityClient\jre\bin\verify.dll
0x6f890000 - 0x6f8b0000 C:\Program Files\Integrity\IntegrityClient\jre\bin\java.dll
0x6f870000 - 0x6f883000 C:\Program Files\Integrity\IntegrityClient\jre\bin\zip.dll
0x6c510000 - 0x6c5fb000 C:\Windows\system32\dbghelp.dll
VM Arguments:
jvm_args: -Xss250M -Xms512M -Xmx1G
java_command: C:\_projects\jenkins\run_and_log\MKS_connect_no_gui\mks_connect_test.jar C:/_projects/jenkins/DEV_m6.54.0.3/project.pj muell.txt
Launcher Type: SUN_STANDARD
Я ищу решение в течение двух недель на любых форумах, но безуспешно. Я почти до безумия
Кто-нибудь знает, в чем может быть проблема?
Я забыл упомянуть, что программа работает как jarfile, если это важный аспект.
РЕДАКТИРОВАТЬ: Когда я устанавливаю -XX:PermSize100M -Xss250M -Xms512M -Xmx1G, я получаю следующее исключение:
com.mks.api.response.CommandException: mks.frame.app.ui.ViewException
Что это значит?
3 ответа
Это нарушение прав доступа в коде JVM, обнаруженное ОС. Приложение может быть вовлечено, но вам нужно поднять это с поддержкой PTC (компания, которая теперь владеет пакетом продуктов MKS). Не так много можно сделать изолированно, потому что этот отчет будет похож на множество других отчетов. Если в ВМ есть ошибка, то ее может вызвать любое количество условий, окружений и байт-кода.
Если вы не можете поднять это с PTC, то вы можете поэкспериментировать с переключением JRE. Source Integrity использует свою собственную частную JRE, установленную в /jre (вы можете увидеть это в трассировке стека), так что вы можете легко удалить выпуск исправления ошибок JRE рядом с /jre, переименовать старый в /jre_old и новый к / JRE, и он должен подобрать новый. Я думаю, что это все, что вам нужно сделать, но я давно работал с этим продуктом.
Излишне говорить, что это не поддерживается PTC и т. Д. И т. П., Но это точка данных.
Теперь, поскольку одна из точек данных, которые у вас есть, заключается в том, что это срабатывает только тогда, когда куча разрешается увеличиваться до некоторого большого размера, и я знаю, что большие песочницы будут оказывать достаточное давление на кучу, вы можете даже столкнуться с аппаратная проблема. То есть это может быть так же просто, как плохая палка памяти. Хотя в наши дни это случалось редко, я видел это раньше, и большую часть времени мы редко используем ресурсы памяти в той степени, в которой это может сделать серьезное Java-приложение.
Кроме того, это, кажется, 32-битная JVM, что означает, что куча будет очень ограничена. То, как память процесса сегментируется в Windows, мы привыкли просто устанавливать кучу более 1 Гб, в зависимости от размеров собственных библиотек, которые должны сосуществовать в той же памяти процесса, количества потоков и пространства permgen, Возможно, вы просто достигли предела памяти процесса.
Полное раскрытие: я работал на МКС.
В прошлом у меня были те же проблемы, и они решались с помощью следующего подхода.
В соответствии с Руководством Integrations Builder от MKS Integrity 2009 SP, ... when a command has the potential of returning a large number of work items ow work items with large amounts of information, consider using approach described in "Using Interim Responses"
Чтобы использовать промежуточный ответ для Java API, выполните команду, используя executeWithInterim()
метод и начать чтение рабочих элементов из ответа, используя WorkItemIterator
-XX:PermSize указывает начальный размер, который будет выделен во время запуска JVM. При необходимости JVM будет выделять до -XX:MaxPermSize, поэтому попробуйте изменить эти значения на более высокие, например -XX:PermSize = 512 -XX:MaxPermSize = 712