Could you reproduce this when compiled with --with-debug. Then the blocka allocator has additional checks which might be helpful to debug this.
Arne
On 2019-11-01 09:50, Stephen R. van den Berg wrote:
This is in a heavy multithreaded application:
Thread 1475 "pike" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff574c700 (LWP 14689)] ba_alloc (a=a@entry=0x55555575bf20 <object_allocator>) at /var/src/roxen/81pike/src/block_allocator.c:267 267 p->h.used++; (gdb) l 262 263 ptr = p->h.first; 264 PIKE_MEMPOOL_ALLOC(a, ptr, a->l.block_size); 265 PIKE_MEM_RW_RANGE(ptr, sizeof(struct ba_block_header)); 266 267 p->h.used++; 268 269 #ifdef PIKE_DEBUG 270 ba_check_ptr(a, a->alloc, ptr, NULL, __LINE__); 271 #endif (gdb) p p $1 = (struct ba_page *) 0x555555d298c0 (gdb) p *p $2 = {h = {first = 0x555555d35ae000, used = 681, flags = 0}} (gdb) p ptr $3 = (struct ba_block_header *) 0x555555d35ae000 (gdb) p *ptr Cannot access memory at address 0x555555d35ae000 (gdb) where #0 ba_alloc (a=a@entry=0x55555575bf20 <object_allocator>) at /var/src/roxen/81pike/src/block_allocator.c:267 #1 0x000055555560156f in alloc_object () at /var/src/roxen/81pike/src/object.c:135 #2 low_clone (p=0x5555557d2f70) at /var/src/roxen/81pike/src/object.c:135 #3 0x0000555555601ad2 in debug_clone_object (p=<optimized out>, args=args@entry=0) at /var/src/roxen/81pike/src/object.c:408 #4 0x000055555564b55c in f_mutex_trylock (args=1) at /var/src/roxen/81pike/src/threads.c:2333 #5 0x0000555555585a9c in low_mega_apply (type=<optimized out>, type@entry=APPLY_STACK, args=1, arg1=<optimized out>, arg1@entry=0x0, arg2=arg2@entry=0x0) at /var/src/roxen/81pike/src/apply_low.h:225 #6 0x000055555558624e in jump_opcode_F_CALL_FUNCTION () at /var/src/roxen/81pike/src/interpret_functions.h:2422 #7 0x00007ffff6a4c55c in ?? () #8 0x00007ffff574bd41 in ?? () #9 0x0000000000000001 in ?? () #10 0x00007fffffffe03e in ?? () #11 0x00007fffffffe03f in ?? () #12 0x00007ffff574c700 in ?? () #13 0x00005555559af8e0 in ?? () #14 0x0000000000000000 in ?? ()
Any ideas? I can still explore more structures, have the session still open.