On 26.06.2014 13:04, Philip Martin wrote: > Branko Čibej <br...@wandisco.com> writes: > >> Results from valgrind or a debugger are pretty much useless because >> there appear to be cases where the JVM /expects/ segfaults to happen, >> and handles them itself ... but valgrind doesn't know enough to ignore >> them. Since they happen in different threads, the timing is not predictable. > Right, so when gdb catches a SEGV it is possible to continue execution > and further SEGVs are caught. Playing with this a bit it appears that > the SEGV that matters is this one:
Yup, I've been looking at exactly this spot and I suspect that I need to make a copy of the hash table into the correct pool. -- Brane > > Program received signal SIGSEGV, Segmentation fault. > 0x00007fffe6529de8 in find_entry (ht=0x7fffd8060c60, key=0x7fffe69a00a8, > klen=-1, val=0x0) at tables/apr_hash.c:271 > 271 hash = ht->hash_func(key, &klen); > (gdb) bt > #0 0x00007fffe6529de8 in find_entry (ht=0x7fffd8060c60, key=0x7fffe69a00a8, > klen=-1, val=0x0) at tables/apr_hash.c:271 > #1 0x00007fffe652a14f in apr_hash_get (ht=0x7fffd8060c60, > key=0x7fffe69a00a8, > klen=-1) at tables/apr_hash.c:344 > #2 0x00007fffe698b610 in (anonymous namespace)::build_credential (env=..., > cred=0x7fffd8060c60, cred_kind=0x7fffd80652c0 "svn.username", > realm=0x7fffd80652e0 "https://svn.example.com:443", > scratch_pool=0x7fffd8068550) > at > ../src/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp:102 > #3 0x00007fffe698c138 in > Java_org_apache_subversion_javahl_util_ConfigLib_nativeGetCredential > (jenv=0x60d9d8, jthis=0x7ffff7fd5c70, > jconfig_dir=0x7ffff7fd5c68, jcred_kind=0x7ffff7fd5c60, > jrealm=0x7ffff7fd5c58) > at > ../src/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp:297 > #4 0x00007ffff2480cd8 in ?? () > #5 0x000000000060e438 in ?? () > #6 0x000000000060e438 in ?? () > #7 0x000000000060e468 in ?? () > #8 0x000000000060e468 in ?? () > #9 0x00007ffffffffffe in ?? () > #10 0x00007ffff7fd5bf8 in ?? () > #11 0x00000006ff6e7cc8 in ?? () > #12 0x00007ffff7fd5c70 in ?? () > #13 0x00000006ff6e8270 in ?? () > #14 0x0000000000000000 in ?? () > > (gdb) p ht > $1 = (apr_hash_t *) 0x7fffd8060c60 > (gdb) p ht[0] > $2 = {pool = 0x7fffd8006470, array = 0x4141414141414141, iterator = { > ht = 0x4141414141414141, this = 0x4141414141414141, > next = 0x4141414141414141, index = 1094795585}, count = 1094795585, > max = 1094795585, seed = 1094795585, hash_func = 0x4141414141414141, > free = 0x4141414141414141} > > (gdb) up 3 > #3 0x00007fffe698c138 in > Java_org_apache_subversion_javahl_util_ConfigLib_nativeGetCredential > (jenv=0x60d9d8, jthis=0x7ffff7fd5c70, > jconfig_dir=0x7ffff7fd5c68, jcred_kind=0x7ffff7fd5c60, > jrealm=0x7ffff7fd5c58) > at > ../src/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp:297 > 297 pool.getPool()); > (gdb) p cb > $6 = {<(anonymous namespace)::WalkCredentialsCallback> = { > _vptr.WalkCredentialsCallback = 0x7fffe69bb650}, > m_cred_kind = 0x7fffd80652c0 "svn.username", > m_realm = 0x7fffd80652e0 "https://svn.example.com:443", > m_delete_when_found = false, m_cred = 0x7fffd8060c60} > > -- Branko Čibej | Director of Subversion WANdisco // Non-Stop Data e. br...@wandisco.com