delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2024/11/14/07:57:05

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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019