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

Reply via email to