https://bugs.kde.org/show_bug.cgi?id=384885

--- Comment #3 from RJVB <rjvber...@gmail.com> ---
Here's what happens: apr_pool_create_ex is called with NULL parent and
allocator, leading to a nullptr dereference:

* thread #1: tid = 0x1c6e93b, 0x000000012bde307f
libapr-1.0.dylib`apr_pool_create_ex(newpool=0x00007fff519cf7e8,
parent=<unavailable>, abort_fn=<unavailable>, allocator=<unavailable>) + 63 at
apr_pools.c:1077, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0x30)
    frame #0: 0x000000012bde307f
libapr-1.0.dylib`apr_pool_create_ex(newpool=0x00007fff519cf7e8,
parent=<unavailable>, abort_fn=<unavailable>, allocator=<unavailable>) + 63 at
apr_pools.c:1077
   1074         abort_fn = parent->abort_fn;
   1075 
   1076     if (allocator == NULL)
-> 1077         allocator = parent->allocator;
   1078 
   1079     if ((node = allocator_alloc(allocator,
   1080                                 MIN_ALLOC - APR_MEMNODE_T_SIZE)) ==
NULL) {
(lldb) p parent
error: Couldn't materialize: couldn't get the value of variable parent:
variable not available
Errored out in Execute, couldn't PrepareToExecuteJITExpression
(lldb) up
frame #1: 0x000000012b8c4c14
libsvn_subr-1.0.dylib`svn_pool_create_ex(parent_pool=<unavailable>,
allocator=<unavailable>) + 36 at pool.c:70
   67   svn_pool_create_ex(apr_pool_t *parent_pool, apr_allocator_t *allocator)
   68   {
   69     apr_pool_t *pool;
-> 70     apr_pool_create_ex(&pool, parent_pool, abort_on_pool_failure,
allocator);
   71     return pool;
   72   }
   73   
(lldb) up
frame #2: 0x000000012b75bc0b kdevsubversion.so`svn::Pool::Pool(apr_pool_t*)
[inlined] svn::pool_create(parent=0x0000000000000000) + 59 at pool.cpp:46
   43         apr_pool_initialize();
   44       }
   45   
-> 46       return svn_pool_create(parent);
   47     }
   48   
   49     Pool::Pool(apr_pool_t * parent)
(lldb) up
frame #3: 0x000000012b75bbf1 kdevsubversion.so`svn::Pool::Pool(apr_pool_t*)
[inlined] svn::Pool::Pool(this=0x00007fb29daea418, parent=0x0000000000000000) +
20 at pool.cpp:50
   47     }
   48   
   49     Pool::Pool(apr_pool_t * parent)
-> 50         : m_parent(parent), m_pool(pool_create(parent))
   51     {
   52     }
   53   
(lldb) bt
* thread #1: tid = 0x1c6e93b, 0x000000012bde307f
libapr-1.0.dylib`apr_pool_create_ex(newpool=0x00007fff519cf7e8,
parent=<unavailable>, abort_fn=<unavailable>, allocator=<unavailable>) + 63 at
apr_pools.c:1077, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0x30)
    frame #0: 0x000000012bde307f
libapr-1.0.dylib`apr_pool_create_ex(newpool=0x00007fff519cf7e8,
parent=<unavailable>, abort_fn=<unavailable>, allocator=<unavailable>) + 63 at
apr_pools.c:1077
    frame #1: 0x000000012b8c4c14
libsvn_subr-1.0.dylib`svn_pool_create_ex(parent_pool=<unavailable>,
allocator=<unavailable>) + 36 at pool.c:70
    frame #2: 0x000000012b75bc0b kdevsubversion.so`svn::Pool::Pool(apr_pool_t*)
[inlined] svn::pool_create(parent=0x0000000000000000) + 59 at pool.cpp:46
  * frame #3: 0x000000012b75bbf1 kdevsubversion.so`svn::Pool::Pool(apr_pool_t*)
[inlined] svn::Pool::Pool(this=0x00007fb29daea418, parent=0x0000000000000000) +
20 at pool.cpp:50
    frame #4: 0x000000012b75bbdd
kdevsubversion.so`svn::Pool::Pool(this=0x00007fb29daea418,
parent=0x0000000000000000) + 13 at pool.cpp:51
    frame #5: 0x000000012b75711d
kdevsubversion.so`svn::Context::Data::Data(this=0x00007fb29daea400,
configDir_=0x00007fff519cf8b0) + 61 at context.cpp:127
    frame #6: 0x000000012b756d62
kdevsubversion.so`svn::Context::Context(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&) [inlined]
svn::Context::Data::Data(this=<unavailable>, configDir_=<unavailable>) + 50 at
context.cpp:130
    frame #7: 0x000000012b756d57
kdevsubversion.so`svn::Context::Context(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&) [inlined]
svn::Context::Context(this=0x00007fb29d3b9240, configDir=0x00007fff519cf8b0) +
23 at context.cpp:631
    frame #8: 0x000000012b756d40
kdevsubversion.so`svn::Context::Context(this=0x00007fb29d3b9240,
configDir=<unavailable>) + 16 at context.cpp:630

Not sure how this does not cause problems on Linux ...

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to