Hi Lixiaokeng, thanks for your continued efforts! On Mon, 2021-03-01 at 22:53 +0800, lixiaokeng wrote: > > 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. Note that unlike all other threads, TUR threads are _detached_ threads. multipathd tries to cancel them, but it has no way to verify that they actually stopped. It may be just a normal observation that you can't see the messages when a TUR thread terminates, in particular if the program is exiting and might have already closed the stderr file descriptor. If you look at the crashed processes with gdb, the thread IDs should give you some clue which stack belongs to which thread. The TUR threads will have higher thread IDs than the others because they are started later. > I will use > int oldstate; > pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate); > ... > pthread_setcancelstate(oldstate, NULL); > pthread_testcancel(); > to test it. Where exactly do you want to put that code? IIUC you don't compile multipathd with -fexceptions, do you? You haven't answered my previous question why you do that for systemd. Regards Martin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel