| delorie.com/archives/browse.cgi | search |
| DMARC-Filter: | OpenDMARC Filter v1.4.2 delorie.com 4AECv4nV833848 |
| Authentication-Results: | delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com |
| Authentication-Results: | delorie.com; spf=pass smtp.mailfrom=cygwin.com |
| DKIM-Filter: | OpenDKIM Filter v2.11.0 delorie.com 4AECv4nV833848 |
| Authentication-Results: | delorie.com; |
| dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=sciTzm1n | |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 70C2E3858402 |
| DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
| s=default; t=1731589022; | |
| bh=dAfjUbHpanLqWrHJUsIqrMAsuadK7kZudRtmHr573IU=; | |
| h=Subject:To:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: | |
| List-Help:List-Subscribe:From:Reply-To:Cc:From; | |
| b=sciTzm1nPAji0C1Bkuevl+S9i7x4cp9/E4rNtfpZEm4i+XcHeO1m6N/lV+R5+WlMx | |
| Pr93bow2R9tNT5O/huTsnpv3yDqKF1UALoyacQCfdGiCRLI6zhTg4kjC6ZoD5D19rj | |
| +BWMNmdeVmVtwrp0Bl3OBCA6SM3FMsrux1hsz9KQ= | |
| X-Original-To: | cygwin AT cygwin DOT com |
| Delivered-To: | cygwin AT cygwin DOT com |
| DMARC-Filter: | OpenDMARC Filter v1.4.2 sourceware.org 38F6B3858D28 |
| ARC-Filter: | OpenARC Filter v1.0.0 sourceware.org 38F6B3858D28 |
| ARC-Seal: | i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1731588947; cv=none; |
| b=QzC55o/a/rZWgfD5LrHjglMPFZfEtV+puQYZ3YPsrHzGTkzLC5wJmp6UZYOBgVHYJKUtLAwtwCjfLeqU64W6jV9dVhXIghP+1N8/sR/44mqIxR5hqeJRQKCOJpdW6mrTCqCJw/wHxG/Ez1OxRNi1zAqSoo7XnPkA2ttreAUVsgU= | |
| ARC-Message-Signature: | i=1; a=rsa-sha256; d=sourceware.org; s=key; |
| t=1731588947; c=relaxed/simple; | |
| bh=sFFoofI/5agPYT2Oi86NcgER1xAiS6n9HxnefYA+d+4=; | |
| h=From:Subject:To:Message-ID:Date:MIME-Version; | |
| b=j03j/SZjZP09Pd03lKLVivR09mHVlc1XwGXByCH90MUOTNP1DhIWvmZ3INpsuQMdRrxyzigaDsvCdcOhbSzZf5HlJ3Xndm2AotONxgVzP9h0I2iNXP0Q4LjFrD1kl94BMxzsk3Fwtv0ZEZtJZIJP8m+uHclIg9vbQvYSrmGefHk= | |
| ARC-Authentication-Results: | i=1; server2.sourceware.org |
| DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 38F6B3858D28 |
| Subject: | Segfault in pthread_sigqueue() or sigtimewait() |
| To: | cygwin AT cygwin DOT com |
| Message-ID: | <bde4465a-717f-6509-8104-6c4885facbc6@t-online.de> |
| Date: | Thu, 14 Nov 2024 13:55:36 +0100 |
| User-Agent: | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 |
| SeaMonkey/2.53.18.2 | |
| MIME-Version: | 1.0 |
| X-TOI-EXPURGATEID: | 150726::1731588939-9DFEA90D-CBCA4264/0/0 CLEAN NORMAL |
| X-TOI-MSGID: | 70bb0451-2f37-46e3-8896-f0342c9a33f4 |
| X-BeenThere: | cygwin AT cygwin DOT com |
| X-Mailman-Version: | 2.1.30 |
| List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
| List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
| List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
| <mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
| From: | Christian Franke via Cygwin <cygwin AT cygwin DOT com> |
| Reply-To: | cygwin AT cygwin DOT com |
| Cc: | Christian Franke <Christian DOT Franke AT t-online DOT de> |
| Sender: | "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com> |
This is a multi-part message in MIME format.
--------------1493F554F59B5FD8B877C5F5
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
After enabling the usage of pthread_sigqueue() in stress-ng, 'stress-ng
--pthread ...' occasionally reports that child processes failed with
SIGSEGV.
The problem is unrelated to the recent fix of the signature of
pthread_sigqueue():
https://cygwin.com/git/?p=newlib-cygwin.git;a=commit;h=1e8c92e
It could be reproduced with Cygwin 3.5.4-1 and with current 3.6.0 TEST
release if the signature is adjusted.
Testcase (attached):
$ gcc -O2 -o sigfault sigfault.c # Add -DBETA if compiling for a TEST
release
$ strace -o trace.log ./sigfault
pthread_create({0xa000188d0}, ...)=0
pthread_sigqueue(0xa000188d0, SIGUSR1, .)
sigtimedwait(...)=30 (errno=0)
...
sigtimedwait(...)=30 (errno=0)
pthread_sigqueue(0xa000188d0, SIGUSR1, .)=0
pthread_join(0xa000188d0, .)=0
pthread_create({0xa000188d0}, ...)=0
pthread_sigqueue(0xa000188d0, SIGUSR1, .)
sigtimedwait(...)=30 (errno=0)
pthread_sigqueue(0xa000188d0, SIGUSR1, .)=0
pthread_join(0xa000188d0, .)=0
pthread_create({0xa000188d0}, ...)=0
pthread_sigqueue(0xa000188d0, SIGUSR1, .)
Segmentation fault
$ cat trace.log
...
  78 103937 [main] sigfault 2074 sig_send: Waiting for pack.wakeup 0x21C
  80 104017 [sig] sigfault 2074 sigpacket::process: signal 30 processing
 147 104164 [sigfault] sigfault 2074 __set_errno: int
sigwait_common(const sigset_t*, siginfo_t*, PLARGE_INTEGER):643 setting
errno 11
 103 104267 [sig] sigfault 2074 sigpacket::process: signal 30, signal
handler 0x1
  84 104351 [sigfault] sigfault 2074 sigwait_common: returning signal -1
  81 104432 [sig] sigfault 2074 sigpacket::setup_handler: controlled
interrupt. stackptr 0x7FFDFE220, stack 0x7FFDFE218, stackptr[-1] 0x100401109
  78 104510 [sig] sigfault 2074 proc_subproc: args: 4, 1
  74 104584 [sig] sigfault 2074 proc_subproc: clear waiting threads
  71 104655 [sig] sigfault 2074 proc_subproc: finished clearing
  70 104725 [sig] sigfault 2074 proc_subproc: returning 1
 125 104850 [sig] sigfault 2074 _cygtls::interrupt_setup: armed
signal_arrived 0x24C, signal 30
  74 104924 [sig] sigfault 2074 sigpacket::setup_handler: signal 30
delivered
  83 105007 [sigfault] sigfault 2074 set_process_mask_delta: oldmask
0, newmask 20000000, deltamask 20000000
--- Process 9568 (pid: 2074), exception c0000005 at 0000000000000001
  80 105087 [sig] sigfault 2074 sigpacket::process: returning 1
--- Process 9568 (pid: 2074) thread 7320 exited with status 0xc0000005
--- Process 9568 (pid: 2074) thread 8928 exited with status 0xc0000005
--- Process 9568 (pid: 2074) thread 6792 exited with status 0xc0000005
--- Process 9568 (pid: 2074) thread 5020 exited with status 0xc0000005
--- Process 9568 thread 9020 exited with status 0xc0000005
--- Process 9568 exited with status 0xc0000005
I guess the problem occurs because pthread_sigqueue() is sometimes
issued after the thread function already returned. The thread pointer
should be valid until pthread_join() is called. Sorry if I missed something.
--
Regards,
Christian
--------------1493F554F59B5FD8B877C5F5
Content-Type: text/plain; charset=UTF-8;
name="sigfault.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="sigfault.c"
I2RlZmluZSBfR05VX1NPVVJDRQ0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jbHVkZSA8cHRo
cmVhZC5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCnN0YXRpYyB2b2xhdGlsZSBjaGFyIHN0
YXJ0ZWQsIHN0b3A7DQoNCnN0YXRpYyB2b2lkICogdGhyZWFkZnVuYyh2b2lkICphcmcpDQp7
DQogICh2b2lkKWFyZzsNCg0KICBzdGFydGVkID0gMTsNCiAgd2hpbGUgKCFzdG9wKQ0KICAg
IHNjaGVkX3lpZWxkKCk7DQoNCiAgc2lnaW5mb190IGluZm8gPSB7MH07DQogIHNpZ3NldF90
IG1hc2s7IHNpZ2VtcHR5c2V0KCZtYXNrKTsNCiAgc2lnYWRkc2V0KCZtYXNrLCBTSUdVU1Ix
KTsNCiAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7DQogIHRpbWVvdXQudHZfc2VjID0gMDsg
dGltZW91dC50dl9uc2VjID0gMTAwMDsNCg0KICBlcnJubyA9IDA7DQogIGludCByZXQgPSBz
aWd0aW1lZHdhaXQoJm1hc2ssICZpbmZvLCAmdGltZW91dCk7DQogIHByaW50Zigic2lndGlt
ZWR3YWl0KC4uLik9JWQgKGVycm5vPSVkKVxuIiwgcmV0LCBlcnJubyk7IGZmbHVzaChzdGRv
dXQpOw0KDQogIHJldHVybiBOVUxMOw0KfQ0KDQppbnQgbWFpbigpDQp7DQogIHNpZ25hbChT
SUdVU1IxLCBTSUdfSUdOKTsNCg0KICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
ew0KICAgIHN0YXJ0ZWQgPSBzdG9wID0gMDsNCg0KICAgIHB0aHJlYWRfdCB0ID0gTlVMTDsN
CiAgICBpbnQgcmV0ID0gcHRocmVhZF9jcmVhdGUoJnQsIE5VTEwsIHRocmVhZGZ1bmMsIE5V
TEwpOw0KICAgIHByaW50ZigicHRocmVhZF9jcmVhdGUoeyVwfSwgLi4uKT0lZFxuIiwgdCwg
cmV0KTsgZmZsdXNoKHN0ZG91dCk7DQogICAgaWYgKHJldCkNCiAgICAgIHJldHVybiAxOw0K
DQogICAgd2hpbGUgKCFzdGFydGVkKQ0KICAgICAgc2NoZWRfeWllbGQoKTsNCiAgICBzdG9w
ID0gMTsNCg0KICAgIHVuaW9uIHNpZ3ZhbCB2YWx1ZSA9IHswfTsNCiAgICBwcmludGYoInB0
aHJlYWRfc2lncXVldWUoJXAsIFNJR1VTUjEsIC4pXG4iLCB0KTsgZmZsdXNoKHN0ZG91dCk7
DQojaWZkZWYgQkVUQQ0KICAgIHJldCA9IHB0aHJlYWRfc2lncXVldWUodCwgU0lHVVNSMSwg
dmFsdWUpOw0KI2Vsc2UNCiAgICByZXQgPSBwdGhyZWFkX3NpZ3F1ZXVlKCZ0LCBTSUdVU1Ix
LCB2YWx1ZSk7DQojZW5kaWYNCiAgICBwcmludGYoInB0aHJlYWRfc2lncXVldWUoJXAsIFNJ
R1VTUjEsIC4pPSVkXG4iLCB0LCByZXQpOyBmZmx1c2goc3Rkb3V0KTsNCiAgICBpZiAocmV0
KQ0KICAgICAgcmV0dXJuIDE7DQoNCiAgICByZXQgPSBwdGhyZWFkX2pvaW4odCwgTlVMTCk7
DQogICAgcHJpbnRmKCJwdGhyZWFkX2pvaW4oJXAsIC4pPSVkXG4iLCB0LCByZXQpOyBmZmx1
c2goc3Rkb3V0KTsNCiAgICBpZiAocmV0KQ0KICAgICAgcmV0dXJuIDE7DQogIH0NCg0KICBw
cmludGYoImRvbmVcbiIpOw0KICByZXR1cm4gMDsNCn0NCg==
--------------1493F554F59B5FD8B877C5F5
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple
--------------1493F554F59B5FD8B877C5F5--
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |