c++/5282: .so exception handler works in 3.0.2 not 3.0.3
swansma@yahoo.com
swansma@yahoo.com
Fri Jan 4 18:56:00 GMT 2002
>Number: 5282
>Category: c++
>Synopsis: .so exception handler works in 3.0.2 not 3.0.3
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Jan 04 18:56:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: swansma@yahoo.com
>Release: gcc version 3.0.3
>Organization:
>Environment:
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.0.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share/gcc-3.0.3 --enable-shared --enable-threads=posix --disable-checking --enable-long-long --enable-cstdio=stdio --enable-clocale=generic --enable-languages=c,c++,f77,objc,java --program-suffix=-3.0.3 --enable-objc-gc --host=i586-mandrake-linux-gnu
Thread model: posix
>Description:
Simple test program works in 3.0.2, not in 3.0.3.
A simple try { throw Object() }catch{Object e} fails.
code and make targets in How-To-Repeat
tuxmodule.h (attached) is required to build (and is from the
redhat (Ingo Molnar) Tux HTTP server package.
>How-To-Repeat:
******* Make targets ********
bugLoad: bugLoad.c BugLib.tux.so
${GCC} -rdynamic -ldl bugLoad.c -o bugLoad
BugLib.o: BugLib.cpp
${CC} ${RELEASE_CPPFLAGS} -c BugLib.cpp
BugLib.tux.so: BugLib.o
${CC} ${LINK} -O2 -Wall -D_REENTRANT -shared -o $@ BugLib.o -lstdc++ -lgcc_s
chmod a-x $@
****** bugLoad.c (./bugLoad shows bug) ********
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <linux/unistd.h>
#include <unistd.h>
#include <string.h>
#include <pwd.h>
#include <grp.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <regex.h>
#include <fcntl.h>
#include <time.h>
#include <sys/mman.h>
#include <dlfcn.h>
#include <popt.h>
#include <sys/socket.h>
#include <ctype.h>
//#include <glib.h>
int main(int argc, char** argv) {
void* handle;
void (*mod_init) (void);
char libname[] = "./BugLib.tux.so";
handle = dlopen (libname, RTLD_LAZY);
printf ("handle: %p\n", handle);
if (!handle) {
printf("%s: dlopen() handle missing", dlerror());
}
mod_init = dlsym(handle, "TUXAPI_init");
if (!mod_init) {
printf("%s: TUXAPI_init() function missing", strerror(errno));
}
printf ("TUXAPI_init: %p\n", mod_init);
if(mod_init)
mod_init();
}
******* BugLib.cpp (shows exception bug, requires Tux) ***
extern "C" {
#include "tuxmodule.h"
void TUXAPI_init();
int TUXAPI_handle_events (user_req_t *req);
}
#include "syslog.h"
#include "TestException.h"
int TUXAPI_handle_events (user_req_t *req) {
return TUX_RETURN_USERSPACE_REQUEST;
}
//TUXAPI_handle_events
// 1. open syslog
// 2.
void TUXAPI_init() {
openlog("BugLib", LOG_PID | LOG_CONS | LOG_NDELAY, LOG_DAEMON);
syslog(LOG_INFO, "TUXAPI_init()");
try {
throw TestException("test123");
return;
} catch(TestException e) {
// This never happens
syslog(LOG_INFO, "Success");
}
}
******* TestException.h ********
#ifndef _EXCEPTION_H
#define _EXCEPTION_H
#include <string.h>
class TestException {
protected:
char msg[1024];
public:
TestException(const char *errorMessage) {
strcpy(msg, errorMessage);
}
};
#endif
>Fix:
none - downgrade to 3.0.2 if you can find rpms (likely not).
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-chdr; name="tuxmodule.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tuxmodule.h"
I2lmbmRlZiBfVFVYX01PRFVMRV9ICiNkZWZpbmUgX1RVWF9NT0RVTEVfSAoKLyoKICogVFVYIC0g
SW50ZWdyYXRlZCBIVFRQIGxheWVyIGFuZCBPYmplY3QgQ2FjaGUKICoKICogQ29weXJpZ2h0IChD
KSAyMDAwLCBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KICoKICogbW9kdWxlLmg6IHVz
ZXItc3BhY2UgcG9ydGlvbnMgb2YgdGhlIEhUVFAgbW9kdWxlIEFQSQogKi8KCiNpbmNsdWRlIDxz
dGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1
ZGUgPHN5cy93YWl0Lmg+CiNpbmNsdWRlIDxzeXMvbW1hbi5oPgojaW5jbHVkZSA8c3lzL3NvY2tl
dC5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8
bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8bmV0ZGIuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNs
dWRlIDxtYWxsb2MuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNs
dWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2lu
Y2x1ZGUgPG5ldGluZXQvdGNwLmg+CgojaW5jbHVkZSAidHV4LmgiCgpleHRlcm4gY2hhciAqVFVY
QVBJX3ZlcnNpb247CmV4dGVybiB1bnNpZ25lZCBsb25nIFRVWEFQSV92ZXJzaW9uX2xlbjsKZXh0
ZXJuIGNoYXIgKlRVWEFQSV9kb2Nyb290OwpleHRlcm4gdW5zaWduZWQgbG9uZyBUVVhBUElfZG9j
cm9vdF9sZW47CmV4dGVybiBjaGFyICpUVVhBUElfc2VydmVybmFtZTsKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgVFVYQVBJX3NlcnZlcm5hbWVfbGVuOwoKZXh0ZXJuIGNoYXIgKipUVVhBUElfbW9kdWxl
bmFtZV9hcnJheTsKCiNkZWZpbmUgQ0dJX1NFUlZFUl9OQU1FKHJlcSkgVFVYQVBJX3NlcnZlcm5h
bWUKI2RlZmluZSBDR0lfU0VSVkVSX05BTUVfTEVOKHJlcSkgVFVYQVBJX3NlcnZlcm5hbWVfbGVu
CiNkZWZpbmUgQ0dJX0dBVEVXQVlfSU5URVJGQUNFKHJlcSkgIkNHSS8xLjEiCiNkZWZpbmUgQ0dJ
X1NFUlZFUl9QUk9UT0NPTChyZXEpIFwKCQkoKChyZXEpLT5odHRwX3ZlcnNpb24gPT0gSFRUUF8x
XzEpID8gIkhUVFAvMS4xIiA6ICJIVFRQLzEuMCIpCiNkZWZpbmUgQ0dJX1NFUlZFUl9QT1JUKHJl
cSkgODAKI2RlZmluZSBDR0lfUkVRVUVTVF9NRVRIT0QocmVxKSAoeyAgCQkJXAoJY2hhciAqX19y
ZXM7CQkJCQlcCgkJCQkJCQlcCiAgICAgICAgc3dpdGNoICgocmVxKS0+aHR0cF9tZXRob2QpIAkJ
CVwKICAgICAgICB7CQkJCQkJXAogICAgICAgICAgICAgICAgY2FzZSBNRVRIT0RfR0VUOgkJCVwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXMgPSAiR0VUIjsgYnJlYWs7CQlcCiAgICAgICAg
ICAgICAgICBjYXNlIE1FVEhPRF9QT1NUOgkJCVwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXMgPSAiUE9TVCI7IGJyZWFrOwkJXAogICAgICAgICAgICAgICAgY2FzZSBNRVRIT0RfSEVBRDoJ
CQlcCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzID0gIkhFQUQiOyBicmVhazsJCVwKICAg
ICAgICAgICAgICAgIGNhc2UgTUVUSE9EX1BVVDoJCQlcCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fcmVzID0gIlBVVCI7IGJyZWFrOwkJXAogICAgICAgICAgICAgICAgZGVmYXVsdDoJCQkJXAog
ICAgICAgICAgICAgICAgICAgICAgICBfX3JlcyA9ICJOT05FIjsgYnJlYWs7CQlcCiAgICAgICAg
fQkJCQkJCVwKCV9fcmVzOwkJCQkJCVwKfSkKI2RlZmluZSBDR0lfSFRUUF9BQ0NFUFQocmVxKSAo
KHJlcSktPmFjY2VwdCkKI2RlZmluZSBDR0lfSFRUUF9VU0VSX0FHRU5UKHJlcSkgKChyZXEpLT51
c2VyX2FnZW50KQojZGVmaW5lIENHSV9IVFRQX1JFRkVSRVIocmVxKSAoKHJlcSktPnJlZmVyZXIp
CiNkZWZpbmUgQ0dJX1BBVEhfVFJBTlNMQVRFRChyZXEpIChUVVhBUElfZG9jcm9vdCkKI2RlZmlu
ZSBDR0lfRE9DVU1FTlRfUk9PVChyZXEpIChUVVhBUElfZG9jcm9vdCkKI2RlZmluZSBDR0lfUEFU
SF9JTkZPKHJlcSkgKChyZXEpLT5xdWVyeSkKI2RlZmluZSBDR0lfU0NSSVBUX05BTUUocmVxKSAo
VFVYQVBJX21vZHVsZW5hbWVfYXJyYXlbKHJlcSktPm1vZHVsZV9pbmRleF0pCiNkZWZpbmUgQ0dJ
X1FVRVJZX1NUUklORyhyZXEpICgocmVxKS0+cXVlcnkpCgovLyBGb3IgdGhlIHRpbWUgYmVpbmcg
eW91J2xsIGhhdmUgdG8gdXNlIEFDVElPTl9HRVRfSEVBREVSUyAKLy8gYW5kIGRlY29kZSB0aGUg
aW5mbyB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0byBkbyBhdXRoZW50aWNhdGlvbi4KCiNkZWZpbmUg
Q0dJX1JFTU9URV9VU0VSKHJlcSkgIiIKI2RlZmluZSBDR0lfUkVNT1RFX0FVVEhfVFlQRShyZXEp
ICIiCiNkZWZpbmUgQ0dJX0FOTk9UQVRJT05fU0VSVkVSKHJlcSkgIiIKCiNkZWZpbmUgQ0dJX0NP
TlRFTlRfVFlQRShyZXEpICgocmVxKS0+Y29udGVudF90eXBlKQoKZXh0ZXJuIGludCB0dXggKHVu
c2lnbmVkIGludCBhY3Rpb24sIHVzZXJfcmVxX3QgKnJlcSk7CgpleHRlcm4gdm9pZCAqIFRVWEFQ
SV9tYWxsb2Nfc2hhcmVkICh1bnNpZ25lZCBpbnQgbGVuKTsKZXh0ZXJuIGNoYXIgKiBUVVhBUElf
YWxsb2NfcmVhZF9vYmplY3RidWYgKHVzZXJfcmVxX3QgKnJlcSwgaW50IGZkKTsKZXh0ZXJuIHZv
aWQgVFVYQVBJX2ZyZWVfb2JqZWN0YnVmICh1c2VyX3JlcV90ICpyZXEsIHZvaWQgKmJ1Zik7Cgoj
ZGVmaW5lIEJVRygpCQkJCQkJCQlcCmRvIHsJCQkJCQkJCQlcCglwcmludGYoIlRVWCBCVUcgYXQg
JWQ6JXMhXG4iLCBfX0xJTkVfXywgX19GSUxFX18pOwkJXAoJdHV4KFRVWF9BQ1RJT05fU1RPUFRI
UkVBRCwgTlVMTCk7CQkJCVwKCXR1eChUVVhfQUNUSU9OX1NIVVRET1dOLCBOVUxMKTsJCQkJCVwK
CSooaW50KikwPTA7CQkJCQkJCVwKCWV4aXQoLTEpOwkJCQkJCQlcCn0gd2hpbGUgKDApCgojZGVm
aW5lIExPQ0tfUFJFRklYICJsb2NrIDsgIgoKI2RlZmluZSBiYXJyaWVyKCkgX19hc21fXyBfX3Zv
bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKQpzdHJ1Y3QgX19kdW1teSB7IHVuc2lnbmVkIGxvbmcg
YVsxMDBdOyB9OwojZGVmaW5lIEFERFIgKCoodm9sYXRpbGUgc3RydWN0IF9fZHVtbXkgKikgYWRk
cikKCmV4dGVybiBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRp
bGUgdm9pZCAqIGFkZHIpCnsKCWludCBvbGRiaXQ7CgoJX19hc21fXyBfX3ZvbGF0aWxlX18oIExP
Q0tfUFJFRklYCgkJImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKCQk6Ij1yIiAob2xkYml0KSwi
PW0iIChBRERSKQoJCToiSXIiIChucikpOwoJcmV0dXJuIG9sZGJpdDsKfQoKZXh0ZXJuIF9faW5s
aW5lX18gdm9pZCBUVVhBUElfZG93biAoaW50ICpzZW0pCnsKCXdoaWxlICh0ZXN0X2FuZF9zZXRf
Yml0KDAsIHNlbSkpCgkJYmFycmllcigpOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2b2lkIFRVWEFQ
SV91cCAoaW50ICpzZW0pCnsKCSooKHZvbGF0aWxlIGludCAqKXNlbSkgPSAwOwp9CgojZGVmaW5l
IFRVWF9ERUJVRyAwCgojaWYgVFVYX0RFQlVHCiMgZGVmaW5lIERwcmludGsoeC4uLikgZG8geyBw
cmludGYoeCk7IGZmbHVzaChzdGRvdXQpOyB9IHdoaWxlICgwKQojZWxzZQojIGRlZmluZSBEcHJp
bnRrKHguLi4pIGRvIHsgfSB3aGlsZSAoMCkKI2VuZGlmCgojZGVmaW5lIEhUVFBfVFJBQ0UocmVx
LGluZm8pIERwcmludGsoIkhUVFAgdHJhY2UgYXQgJXM6JWQsIHJlcXVlc3QgJXAsIGluZm8gJWQs
IGV2ZW50ICVkIChtZXRoOiVkLCBxdWVyeTolcywgY29va2llczolcykuXG4iLCBfX0ZJTEVfXywg
X19MSU5FX18sIChyZXEpLT5pZCwgaW5mbywgKHJlcSktPmV2ZW50LCAocmVxKS0+aHR0cF9tZXRo
b2QsIChyZXEpLT5xdWVyeSwgKHJlcSktPmNvb2tpZXNfbGVuID8gKHJlcSktPmNvb2tpZXMgOiAi
PG5vIGNvb2tpZXM+IikKCiNlbmRpZgo=
More information about the Gcc-prs
mailing list