Hi, I could reproduce it and get a core dump and a backtrace: (gdb) bt #0 0xb7be350e in _int_malloc () from /lib/tls/libc.so.6 #1 0xb7be4dfc in malloc () from /lib/tls/libc.so.6 #2 0xb7ba807c in __add_to_environ () from /lib/tls/libc.so.6 #3 0xb7ba8151 in setenv () from /lib/tls/libc.so.6 #4 0x08082ca9 in set_environ (var=0x238 <Address 0x238 out of bounds>, value=0x239 <Address 0x239 out of bounds>) at local.c:206 #5 0x08051ddd in set_buffer_environ (buf=0x82a6bb0) at main.c:5595 #6 0x0805832e in main (argc=2, argv=0xbfc0e324, envp=0xbfc0e330) at main.c:1125
Unfortunately i could not reproduce the problem when running w3m with gdb attached :-( The problematic call seems to be in main.c:5595 (set_buffer_environ): set_environ("W3M_CURRENT_WORD", s ? s : ""); Somehow the addresses to "W3M_CURRENT_WORD" (a constant) and s are changed to some invalid values (0x238 and 0x239) in the call. When i added a printf("%p %s", s, s); before this call the string s was correct and the address was something like 0x8334222. Nonetheless the backtrace looked like above. So something changes addresses at the set_environ call. I could reproduce this odd behaviour only with -O2 (the default optimization flag) to gcc. If compiled with -O0, -O1 or -Os it does not appear. A test of the single optimization flags which are in -O2 but not in the other ones might lead to the source of the failure. Unfortunately I am not eager to do it at the moment. Regards, -- Karsten Schölzel | Email: [EMAIL PROTECTED] Väderleden 9 4:98 | Jabber: [EMAIL PROTECTED] 97633 Luleå | VoIP: sip:[EMAIL PROTECTED] Sweden | sip:[EMAIL PROTECTED] | Tel: +4918015855857712 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]