From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14348 invoked by alias); 10 Apr 2002 21:36:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 14327 invoked by uid 71); 10 Apr 2002 21:36:00 -0000 Resent-Date: 10 Apr 2002 21:36:00 -0000 Resent-Message-ID: <20020410213600.14326.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, lennox@cs.columbia.edu Received:(qmail 14016 invoked by uid 61); 10 Apr 2002 21:34:22 -0000 Message-Id:<20020410213422.14015.qmail@sources.redhat.com> Date: Wed, 10 Apr 2002 14:36:00 -0000 From: lennox@cs.columbia.edu Reply-To: lennox@cs.columbia.edu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/6249: Profiling breaks pthread code on Solaris 8 X-SW-Source: 2002-04/txt/msg00593.txt.bz2 List-Id: >Number: 6249 >Category: target >Synopsis: Profiling breaks pthread code on Solaris 8 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Apr 10 14:36:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: >Release: gcc-3.0.2 >Organization: >Environment: grandcentral $ uname -a SunOS grandcentral.cs.columbia.edu 5.8 Generic_111850-02 sun4u sparc You have mail in /var/mail//lennox grandcentral $ gcc -v Reading specs from /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/specs Configured with: /src/unpack/gnu/gcc-3.0.2/configure --prefix=/usr/local/gnu --with-gnu-as --with-gnu-ld --with-as=/usr/local/gnu/bin/as --with-ld=/usr/local/gnu/bin/ld Thread model: posix gcc version 3.0.2 >Description: When I compile code that uses pthread_* functions on Solaris 8 with the -pg option, the pthread functions return -1 rather than do anything. -1 is not a valid return value for pthread_*; they're specified as returning an errno. This makes it quite difficult to profile pthread-using code. This problem also causes profiled C++ code to crash during startup. >How-To-Repeat: Compile the attached file with gcc -D_REENTRANT -Wall -g -O2 -o multithread-c multithread.c -lpthread -pg on Solaris 8. Run the program. Note the error output pthread_create: -1 Compare with the same output without -pg, which produces Hello, world! as expected. Compiling the same program as C++ code: g++ -D_REENTRANT -Wall -g -O2 -o multithread-cxx multithread.c -lpthread -pg causes the program to segfault during startup. A back trace shows it crashing under _init(): Program received signal SIGSEGV, Segmentation fault. 0xff26bcb8 in mutex_unlock () from /usr/lib/libthread.so.1 (gdb) bt #0 0xff26bcb8 in mutex_unlock () from /usr/lib/libthread.so.1 #1 0x42b28 in sbrk () #2 0x18480 in monstartup () #3 0x18a98 in internal_mcount () #4 0x3bddc in memset () #5 0xff2630b0 in _clean_thread () from /usr/lib/libthread.so.1 #6 0xff263234 in _t0init () from /usr/lib/libthread.so.1 #7 0xff26bf08 in _init () from /usr/lib/libthread.so.1 #8 0xff3bad88 in ?? () #9 0xff3baa00 in ?? () #10 0xff3c4d60 in ?? () #11 0xff3b2940 in ?? () With gcc 2.95.2, the C behavior is the same, but the C++ behavior is different from gcc 3.0.2: it does not crash during startup, but instead fails the same way as C does. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="multithread.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="multithread.c" I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHB0aHJlYWQu aD4KI2luY2x1ZGUgPGVycm5vLmg+CgojaWZuZGVmIEVMQVNUCiNkZWZpbmUgRUxBU1QgRVNUQUxF IC8qIExhcmdlc3QgZXJybm8gdmFsdWUgb24gU29sYXJpcyA4ICovCiNlbmRpZgoKdm9pZCogb3Ro ZXJfdGhyZWFkKHZvaWQqKTsKCmludCBtYWluKHZvaWQpCnsKICBwdGhyZWFkX3QgdGhyZWFkOwog IGludCByZXQ7CiAgdm9pZCAqIHZhbHVlOwoKICByZXQgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFk LCBOVUxMLCAmb3RoZXJfdGhyZWFkLCBOVUxMKTsKICBpZiAocmV0ICE9IDApIHsKICAgIGZwcmlu dGYoc3RkZXJyLCAicHRocmVhZF9jcmVhdGU6ICVkXG4iLCByZXQpOwogICAgaWYgKHJldCA+IDAg JiYgcmV0IDw9IEVMQVNUKSB7CiAgICAgIGZwcmludGYoc3RkZXJyLCAicHRocmVhZF9jcmVhdGU6 ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKICAgIH0KICAgIHJldHVybiAxOwogIH0KCiAgcmV0ID0g cHRocmVhZF9qb2luKHRocmVhZCwgJnZhbHVlKTsKICBpZiAocmV0ICE9IDApIHsKICAgIGZwcmlu dGYoc3RkZXJyLCAicHRocmVhZF9qb2luOiAlZFxuIiwgcmV0KTsKICAgIGlmIChyZXQgPiAwICYm IHJldCA8PSBFTEFTVCkgewogICAgICBmcHJpbnRmKHN0ZGVyciwgInB0aHJlYWRfam9pbjogJXNc biIsIHN0cmVycm9yKHJldCkpOwogICAgfQogICAgcmV0dXJuIDE7CiAgfQogIAogIHJldHVybiAw Owp9CgoKdm9pZCAqIG90aGVyX3RocmVhZCh2b2lkICpmb28pCnsKICBwcmludGYoIkhlbGxvLCB3 b3JsZCFcbiIpOwoKICByZXR1cm4gTlVMTDsKfQo=