Thanks for reply, I will give it a try.
From my side:
I see throught native code for filling stack trace - for complete reconstruction needed parsed class object with table of method ids, constans and etc... + code points to string numbers tables - as what I know for HPROF format - all this not included in dump - so at most I can get for each stack frame:
1. Object from witch call was rerformed,
2. method reference (in terms of class file format (my sugestion based on native code quick overview))
3. instraction offset in method (in terms of class file format (my sugestion based on native code quick overview))
In my current case class name from our code is all I need, so I stoped with such OQL for getting top 32 frames for each Exception:
SELECT o.@objectId, o.checkoutStackTraceException.backtrace[2][0:-1]
FROM com.mchange.v2.resourcepool.BasicResourcePool$PunchCard o
WHERE toString(o.checkoutStackTraceException.backtrace[2][0:-1]).contains("name=ru")
This gives table with 2 columns:
o.@objectId |o.checkoutStackTraceException.backtrace[2][0:-1]
1 943 133 |[java.lang.Class [id=0x6c1f93ed8;name=com.mchange.v2.resourcepool.BasicResourcePool], java.lang.Class [id=0x6c1fa91e8;name=com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool], java.lang.Class [id=0x6c1fa91e8;name=com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool], java.lang.Class [id=0x6c1fd0208;name=com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource], java.lang.Class [id=0x6c1f9e738;name=org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider], java.lang.Class [id=0x6c1f69a68;name=org.hibernate.jdbc.ConnectionManager], java.lang.Class [id=0x6c1f69a68;name=org.hibernate.jdbc.ConnectionManager], ... skip long string ...]
...
so with little vim it's became like this:
1 943 133 |
at java.lang.Class
at id=0x6c1f93ed8;name=com.mchange.v2.resourcepool.BasicResourcePool], java.lang.Class
at id=0x6c1fa91e8;name=com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool], java.lang.Class
at id=0x6c1fa91e8;name=com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool], java.lang.Class
at id=0x6c1fd0208;name=com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource], java.lang.Class
at id=0x6c1f9e738;name=org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider], java.lang.Class
at id=0x6c1f69a68;name=org.hibernate.jdbc.ConnectionManager], java.lang.Class
at id=0x6c1f69a68;name=org.hibernate.jdbc.ConnectionManager], java.lang.Class
at id=0x6c1f69710;name=org.hibernate.jdbc.BorrowedConnectionProxy], java.lang.Class
at id=0x6c1e4b1d8;name=com.sun.proxy.$Proxy93], java.lang.Class
... skip ...
This may help some one.