This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: program exit code, "at exit" handler and explicit close of shared objects
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin at cygwin dot com" <cygwin at cygwin dot com>
- Date: Tue, 29 Oct 2019 14:53:41 +0000
- Subject: Re: program exit code, "at exit" handler and explicit close of shared objects
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VNg2WZyRHVdN8QFPZbXUxVp5Q9L78+wc5yv/tfRL3TM=; b=iyjj69kwrlvg0EVKkzDM2bq6vgHi9/igU4O+Htb037MwAtucyAbCqiGx4XJ4tL8EWIEQJTweVA6T5289JPcJq5b4tNJCWkDaGbuhyBbqtFbS3riCJgOGW1prqsJbxO1WLatwYwpSqfhFiU3HpIuUIDXqp6IPzKlEd3f5TfudiJ3gBlB3s0pBds/P/Hc5e4HJ/inxjAfM7penxKLvlWOgesaihJS+2QW0Jr3oR2qsTRXXJVGJYu3wpsW8BNGQJgKTTTMK6WqmF5rtt8lUvnW9/UN4smTj/o8yY9RNb9jg5BHmOTH1Tk0GckK+t7AWb45dvwF/2L1HYgL1tb+TF8sr9w==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=niYLZ6oHgn3o+ncW49YTd7+y6c3yT8aJOfuFPJiLOynluVxD0ret6wtCdW4bG1CffPkQMbxuLGXfzTb0PPtDByDEr6Oj7b3jEuXJ11Bqfz35w2WZBNctmNkepoCVEtO0QWJrFdNcZbDmrMwuPlI9I5pi04+7Ez3EBD+GWaXzSYLkOfc/uYHBqoIu6bb0VHn5ynI8p6/5df1F/qGfby6ocacoDAVq0VIgf74Jg/pz3Oj/cziZqGvafYi1kJO1G9/Sj1Eo54O2wgji0gnVUiMFWgIuz80RYs85vxtv/SMDTCVd0ccTdFJhY7QR+zLhHqxJqULhME6qHDskzjSjbjbRYw==
- References: <a24efbf6-872e-1e5b-017a-b14c59d84550@roumenpetrov.info>
On 10/26/2019 11:07 AM, Roumen Petrov wrote:
>
> After additional tests (research) I was able to isolate issues to simple test
> case. Please find attached "test-dlclose.c" and "Makefile".
> First test is as is:
>
> $ make
> cc -g -Wall -Wextra test-dlclose.c -o test-dlclose
> ./test-dlclose
> exit with code 33
> make: [Makefile:4: all] Error 33 (ignored)
>
> For next test change test-dlclose.c to define DLCLOSE_ATEXIT ( s/#if 0/#if 1/ ):
> $ make
> cc -g -Wall -Wextra test-dlclose.c -o test-dlclose
> ./test-dlclose
> exit with code 33
I ran this second version of test-dlclose (with DLCLOSE_ATEXIT defined) under
strace and got the following:
$ strace -o trace.out ./test-dlclose.exe
exit with code 33
Segmentation fault
The strace output ends with
30 30143 [main] test-dlclose 847 write: 18 = write(1, 0x600061E20, 18)
--- Process 33456 (pid: 847) unloaded DLL at 00000003e7930000
--- Process 33456 (pid: 847), exception c0000005 at 00000003e7931080
--- Process 33456 (pid: 847) thread 26088 exited with status 0xc0000005
--- Process 33456 (pid: 847) thread 33544 exited with status 0xc0000005
--- Process 33456 (pid: 847) thread 36020 exited with status 0xc0000005
--- Process 33456 exited with status 0xc0000005
The address 00000003e7930000 seems to be in /usr/bin/cygz.dll, which is the DLL
that got unloaded. After installing zlib-debuginfo, I ran addr2line to see
where the crash occurred, and this too crashed:
$ addr2line -C -f -i -p -e /usr/bin/cygz.dll 0x3e7931080
Segmentation fault (core dumped)
That's as far as I've gotten.
Ken
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple