Mail Archives: cygwin/2008/02/15/03:38:42
----=a7d09919b3a42c2
Content-Type: text/plain; charset="UTF-8";
Content-Transfer-Encoding: 8bit
After excellently quick correction of pthread_kill when the argument
signal is zero
(by cgf), I have found another problem related to signal handling. The
code in attachment
demonstrates it ( because of pthread_kill, it must be run with
cygwin1-20080213.dll and newer ).
It seams that signal handlers for signals like SIGSEGV, SIGFPE are
called only once,
and the default handler is called for the second time the signal occures
in the process.
I'm not sure if the example is reasonable (e.g. pthread_exit in signal
handler...),
but works as expected on linux.
Output from the example compiled and run in linux:
Starting SIGSEGV1...
tid1=b7f1abb0
Sigaction success, errno = 0
Join1 ---> Result: 0, xx=8
Ret. value ---> Result: 8, xx=8
Good thread create ---> Result: 0, xx=8
Starting SIGSEGV2...
tid2=b7519bb0
Sigaction success, errno = 0
<--------------------------- this is the end in cygwin (crash info
message)------------
xx=9
Join2 ---> Result: 0, xx=9
Ret. value ---> Result: 9, xx=9
----=a7d09919b3a42c2
Content-Type: text/plain; name="sigpk4.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sigpk4.c"
I2luY2x1ZGUgPHNpZ25hbC5oPg0KI2luY2x1ZGUgPHB0aHJlYWQuaD4NCiNp
bmNsdWRlIDxlcnJuby5oPg0KDQp2b2xhdGlsZSBzdGF0aWMgaW50IHh4PTc7
DQoNCnZvaWQgU0hhbmRsZXIoaW50IHNpZykNCnsNCgl4eCsrOw0KCXB0aHJl
YWRfZXhpdCgodm9pZCopeHgpOw0KCXJldHVybjsNCn0NCg0KDQp2b2lkKiBU
aHJlYWQxKHZvaWQgKmFyZykNCnsNCglzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlv
bnM7DQoJaW50ICphPTA7DQoNCgltZW1zZXQoJmFjdGlvbnMsIDAsIHNpemVv
ZihhY3Rpb25zKSk7DQoJc2lnZW1wdHlzZXQoJmFjdGlvbnMuc2FfbWFzayk7
DQoJc2lnYWRkc2V0KCZhY3Rpb25zLnNhX21hc2ssIFNJR1NFR1YpOw0KDQoJ
c2xlZXAoMSk7DQoJYWN0aW9ucy5zYV9oYW5kbGVyID0gU0hhbmRsZXI7DQoJ
YWN0aW9ucy5zYV9mbGFncyA9IDA7DQoJaWYgKHNpZ2FjdGlvbihTSUdTRUdW
LCZhY3Rpb25zLCBOVUxMKSkNCgkJcHJpbnRmKCJTaWdhY3Rpb24gRVJST1Ig
ISEhLCBlcnJubyA9ICVkXG4iLCBlcnJubyk7DQoJZWxzZQ0KCQlwcmludGYo
IlNpZ2FjdGlvbiBzdWNjZXNzLCBlcnJubyA9ICVkXG4iLCBlcnJubyk7DQoN
CglzbGVlcCg1KTsNCgkvLyBpbmR1Y2UgU0lHU0VHVi4uLg0KCSphPTU7DQp9
DQoNCnZvaWQqIE9LVGhyZWFkKHZvaWQgKmFyZykNCnsNCglzbGVlcCgzMCk7
DQp9DQoNCnN0YXRpYyB2b2lkIHByaW50cmMoIGNoYXIgKm5hbWUsIGludCBy
YykNCnsNCglwcmludGYoIiUtMjBzIC0tLT4gUmVzdWx0OiAlZCwgeHg9JWRc
biIsIG5hbWUsIHJjLCB4eCk7DQp9DQoNCmludCBtYWluKCkNCnsNCglwdGhy
ZWFkX3QgdGlkLHRpZDI7DQoJaW50IHJjOw0KDQoJcHJpbnRmKCJTdGFydGlu
ZyBTSUdTRUdWMS4uLlxuIik7DQoJcHRocmVhZF9jcmVhdGUoJnRpZCwgTlVM
TCwgVGhyZWFkMSwgKHZvaWQqKTEpOw0KCXByaW50ZigidGlkMT0leFxuIiwg
dGlkKTsNCgl3aGlsZSAocHRocmVhZF9raWxsKHRpZCwgMCkgIT1FU1JDSCkN
CgkJc2xlZXAoMSk7DQoJcHJpbnRyYygiSm9pbjEiLHB0aHJlYWRfam9pbih0
aWQsKHZvaWQqKikmcmMpKTsNCglwcmludHJjKCJSZXQuIHZhbHVlIiwgcmMp
Ow0KDQoJcHJpbnRyYygiR29vZCB0aHJlYWQgY3JlYXRlIixwdGhyZWFkX2Ny
ZWF0ZSgmdGlkLCBOVUxMLCBPS1RocmVhZCwgTlVMTCkpOw0KDQoJcHJpbnRm
KCJTdGFydGluZyBTSUdTRUdWMi4uLlxuIik7DQoJcHRocmVhZF9jcmVhdGUo
JnRpZDIsIE5VTEwsIFRocmVhZDEsICh2b2lkKikyKTsNCglwcmludGYoInRp
ZDI9JXhcbiIsIHRpZDIpOw0KCXdoaWxlIChwdGhyZWFkX2tpbGwodGlkMiwg
MCkgIT1FU1JDSCkNCgkJc2xlZXAoMSk7DQoJcHJpbnRmKCJ4eD0lZFxuIix4
eCk7DQoJcHJpbnRyYygiSm9pbjIiLHB0aHJlYWRfam9pbih0aWQyLCh2b2lk
KiopJnJjKSk7DQoJcHJpbnRyYygiUmV0LiB2YWx1ZSIsIHJjKTsNCg0KDQoJ
cmV0dXJuIDA7DQp9DQo=
----=a7d09919b3a42c2
Content-Type: text/plain; charset=us-ascii
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
----=a7d09919b3a42c2--
- Raw text -