On Mon, Nov 26, 2001 at 06:54:33PM +0100, Guido Guenther wrote: > On Sat, Nov 24, 2001 at 11:15:12PM +0100, Krzysztof Krzyzaniak wrote: > [..snip..] > > BTW several programs crashes on my Indy i.e. menu packages, konqueror, > > emacs21, xemacs: > Could you check the source code if these packages crash while messing > with C++ exceptions? I just had a quick look into the menu package and > it seems that C++ exception handling is broken on mips using g++-2.95.4. > A testcase like: > > #include <iostream.h> > #include <string> > > class ferror_open { > int a; > public: > ferror_open():a(2){}; > int message(){ > return a; > }; > }; > > int main() > { > try { > throw ferror_open(); > } catch(ferror_open d){ cout << d.message() << endl;}; > }
mips:~# g++ -g -o test test.c mips:~# ./test Segmentation fault mips:~# g++ --version 2.95.4 mips:~# strace ./test mips:~# cat test.log execve("./test", ["./test"], [/* 25 vars */]) = 0 uname({sys="Linux", node="mips", ...}) = 0 brk(0) = 0x100001e0 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=22419, ...}) = 0 old_mmap(NULL, 22419, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aac4000 close(3) = 0 open("/usr/lib/libstdc++-libc6.2-2.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\1>p"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0644, st_size=381952, ...}) = 0 old_mmap(NULL, 614892, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2ab05000 mprotect(0x2ab4f000, 311788, PROT_NONE) = 0 old_mmap(0x2ab8e000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x49000) = 0x2ab8e000 old_mmap(0x2ab99000, 8684, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab99000 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0Dp"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0644, st_size=572476, ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaca000 old_mmap(NULL, 822160, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2ab9c000 mprotect(0x2ac25000, 261008, PROT_NONE) = 0 old_mmap(0x2ac64000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x88000) = 0x2ac64000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\1\240"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=1633664, ...}) = 0 old_mmap(NULL, 1829696, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2ac65000 mprotect(0x2add9000, 305984, PROT_NONE) = 0 old_mmap(0x2ae18000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x173000) = 0x2ae18000 old_mmap(0x2ae20000, 15168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ae20000 close(3) = 0 munmap(0x2aac4000, 22419) = 0 brk(0) = 0x100001e0 brk(0x10000200) = 0x10000200 brk(0x10001000) = 0x10001000 brk(0x10003000) = 0x10003000 --- SIGSEGV (Segmentation fault) --- +++ killed by SIGSEGV +++ mips:~# gdb ./test GNU gdb 5.0.90-cvs (MI_OUT) Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "mips-linux"... (gdb) run Starting program: /home/eloy/./test Program received signal SIGSEGV, Segmentation fault. 0x00000000 in ?? () (gdb) backtrace #0 0x00000000 in ?? () (gdb) eloy -- . . . , . , | _ __. _.|_| |_| Krzysztof "eloy" Krzyżaniak <[EMAIL PROTECTED]> |(_) /_(_] | | Oficjalna strona kabaretu Loża 44 http://loza44.topnet.pl/ Co za szlachetna walka! Sędzia dwoi się i troi zawodnikom w oczach!