[dm-devel] [PATCH] multipathd: avoid crash in uevent_cleanup()

lixiaokeng lixiaokeng at huawei.com
Mon Mar 1 14:53:31 UTC 2021



On 2021/2/3 21:57, Martin Wilck wrote:
> On Wed, 2021-02-03 at 18:48 +0800, lixiaokeng wrote:
>>
>>
>> On 2021/2/3 4:52, Martin Wilck wrote:
>>> did this fix your "crash on exit" issue?
>>
>> Unfortunately, the issue is not solved.
>>
>> There will be some different coredump stack.
>>
>> 0.8.5 (I'm not sure there are only two stacks in 0.8.5)
>> First stack:
>> Program terminated with signal SIGSEGV, Segmentation fault.
>> #0  0x00007f59a0109647 in ?? ()
>> [Current thread is 1 (LWP 1997690)]
>> (gdb) bt
>> #0  0x00007f59a0109647 in ?? ()
>> #1  0x0000000000000000 in ?? ()
>> (gdb) info threads
>>   Id   Target Id         Frame
>> * 1    LWP 1997690       0x00007f59a0109647 in ?? ()
>>   2    LWP 1996840       0x00007f59a0531de7 in ?? ()
>>   3    LWP 1997692       0x00007f59a0109647 in ?? ()
>>   4    LWP 1996857       0x00007f59a020d169 in ?? ()
>>
>> Second stack:
>> #0  0x0000ffffb6118f4c in aarch64_fallback_frame_state
>> (context=0xffffb523f200, context=0xffffb523f200, fs=0xffffb523e700)
>> at ./md-unwind-support.h:74
>> #1  uw_frame_state_for (context=context at entry=0xffffb523f200, 
>> fs=fs at entry=0xffffb523e700) at ../../../libgcc/unwind-dw2.c:1257
>> #2  0x0000ffffb6119ef4 in _Unwind_ForcedUnwind_Phase2
>> (exc=exc at entry=0xffffb52403b0, context=context at entry=0xffffb523f200)
>> at ../../../libgcc/unwind.inc:155
>> #3  0x0000ffffb611a284 in _Unwind_ForcedUnwind (exc=0xffffb52403b0, 
>> stop=stop at entry=0xffffb64846c0 <unwind_stop>,
>> stop_argument=0xffffb523f630) at ../../../libgcc/unwind.inc:207
>> #4  0x0000ffffb6484860 in __GI___pthread_unwind (buf=<optimized out>)
>> at unwind.c:121
>> #5  0x0000ffffb6482d08 in __do_cancel () at pthreadP.h:304
>> #6  __GI___pthread_testcancel () at pthread_testcancel.c:26
>> #7  0x0000ffffb5c528e8 in ?? ()
>>
> 

Hi Martin:
   Here I add condlog(2, "start funcname"), pthread_cleanup_push(func_print, NULL)
in every pthread_create func. When these two core happened, "exit tur_thread"
are less than "start tur_thread". So the trouble may be in tur_thread.

I will use
	int oldstate;
	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate);
 	...
	pthread_setcancelstate(oldstate, NULL);
	pthread_testcancel();
to test it.

Regards,
Lixiaokeng





More information about the dm-devel mailing list