关于使用Java的本地calltrace的问题

时间:2014-05-11 12:48:50

标签: java c++ java-native-interface windbg

我们正在调试导致Tomcat Web应用程序崩溃的错误。 该应用程序使用2个第三方应用程序而非jni,其中一个使用SmartHeap的第三方(它是用于c / c ++应用程序的内存管理库),另一个不使用(它是webMethods broker版本5)。

奇怪的是我在崩溃日志中看到webMethods调用其本机方法来启动与代理服务器的连接,但是如果我使用WinDbg打印发生崩溃的线程的调用跟踪(加载创建的minidump文件)当JVM崩溃时,它包含对SmartHeap函数的调用。现在我觉得我有点失落...因为我已经检查过,并且没有从webMethods二进制文件中找到对这个dll的引用。

(实际上是一个内存分配)

我的问题是怎么可能?

我的意思是任何人都可以描述这部分是如何工作的?因为我认为解释/编译和本机帧是按固定顺序调用的(它是合乎逻辑的)。

  • 也许调用堆栈无效? (现在我们有许多转储文件具有几乎相同的调用跟踪)
  • 或调用跟踪(本机函数的调用顺序)是有效的,只有一些函数在调用之前已经重新排序(就像在将它发送到webMethods代理之前必须生成一个惰性对象,但我不知道看到这个的任何迹象)

我通过调用“.ecxr”和“kv”查询转储文件上的调用跟踪,输出为:

0:060> .ecxr
eax=4d330554 ebx=4d350010 ecx=4d330010 edx=00000000 esi=4d350010 edi=00000000
eip=4c912f15 esp=4bf1dad0 ebp=3574884d iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206
shsmp!shi_allocSmall2+0x195:
4c912f15 8b4d00          mov     ecx,dword ptr [ebp]  ss:0023:3574884d=????????
0:060> k
*** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr  
4bf1daec 4c912bbd shsmp!shi_allocSmall2+0x195
4bf1dafc 4c91b973 shsmp!MemAllocPtr+0x5d
*** WARNING: Unable to verify checksum for awssl50jn.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for awssl50jn.dll - 
4bf1db14 49abc38d shsmp!shi_malloc_dbg+0x23
WARNING: Stack unwind information not available. Following frames may be wrong.
4bf1db3c 49abeca2 awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0xa1cd
4bf1db48 49ab5e66 awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0xcae2
4bf1db4c 49ab5e55 awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0x3ca6
4bf1db60 49ab667d awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0x3c95
4bf1db80 49abdbbc awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0x44bd
4bf1dc20 4c912f4f awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0xb9fc
4bf1dc78 49abd607 shsmp!shi_allocSmall2+0x1cf
00000000 00000000 awssl50jn!Java_COM_activesw_api_client_ssl_AwSSLNative_getSecurityInfo+0xb447`

任何帮助将不胜感激!

0 个答案:

没有答案