在同一进程中使用存储在共享内存中的rwlock对象的两个线程在pthread压力测试期间遇到崩溃。我花了一段时间尝试查找内存损坏或死锁,但目前还没有发现。这只是通知我已经创建了死锁的不太理想的方式吗?有关调试此问题的工具/方法的任何指针?
线程5“tms_test”收到信号SIGABRT,中止。 [切换到线程0x7ffff28a7700(LWP 3777)] 0x00007ffff761e428在../sysdeps/unix/sysv/linux/raise.c文件的__GI_raise函数中(sig=sig@entry=6)。 54 ../sysdeps/unix/sysv/linux/raise.c:没有此类文件或目录。 (gdb) bt #0 0x00007ffff761e428在../sysdeps/unix/sysv/linux/raise.c文件的__GI_raise函数中(sig=sig@entry=6)。 #1 0x00007ffff762002a在abort.c文件的__GI_abort函数中。 #2 0x00007ffff76607ea在../sysdeps/posix/libc_fatal.c文件的__libc_message函数中(do_abort=do_abort@entry=1,fmt=fmt@entry=0x7ffff77776cc“%s”)。 #3 0x00007ffff766080e在../sysdeps/posix/libc_fatal.c文件的__GI___libc_fatal函数中(message=message@entry=0x7ffff79c4ae0“The futex facility returned an unexpected error code.”)。 #4 0x00007ffff79be7e5在../sysdeps/nptl/futex-internal.h文件的futex_fatal_error函数中。 #5 在../sysdeps/unix/sysv/linux/futex-internal.h文件中的futex_wait函数(private=,expected=,futex_word=0x7ffff7f670d9)。 #6 在../sysdeps/nptl/futex-internal.h文件中的futex_wait_simple函数(private=,expected=,futex_word=0x7ffff7f670d9)。 #7 在pthread_rwlock_wrlock.c文件中的__pthread_rwlock_wrlock_slow函数中(rwlock=0x7ffff7f670cd)。 #8 0x00000000004046e3在tms_mem.c文件的_memstat函数中(offset=0x7fffdc0b11a5,func=0x0,lineno=0,size=134,flag=1 '\001')。 #9 0x000000000040703b在tms_mem.c文件的TmsMemReallocExec函数中(in=0x7fffdc0abb81,size=211,func=0x43f858“_malloc_thread”,lineno=478)。 #10 0x000000000042a008在tms_test.c文件的_malloc_thread函数中(arg=0x644c11)。 #11 0x000000000041a1d6在tms_mem.c文件的_threadStarter函数中(arg=0x644c51)。 #12 0x00007ffff79b96ba在pthread_create.c文件的start_thread函数中(arg=0x7ffff28a7700)。 #13 0x00007ffff76ef82d在../sysdeps/unix/sysv/linux/x86_64/clone.S文件中的clone函数中。