Re: emacs aborting on exit with recent lib/libc/stdlib/atexit.c changes

From: Kostik Belousov <kostikbel_at_gmail.com>
Date: Fri, 27 Aug 2010 22:04:07 +0300
On Fri, Aug 27, 2010 at 06:21:08PM +0200, Fabian Keil wrote:
> The recent lib/libc/stdlib/atexit.c changes broke emacs (23.2_2,2) for me.
> It aborts on exit (C-x C-c) after receiving SIGBUS:
> 
> fk_at_r500 ~ $gdb emacs
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 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 "amd64-marcel-freebsd"...
> (gdb) run
> Starting program: /usr/local/bin/emacs 
> [New LWP 100281]
> [New Thread 1260600 (LWP 100281)]
> 
> Program received signal SIGBUS, Bus error.
> [Switching to Thread 1260600 (LWP 100281)]
> 0x00000008045c432d in __elf_phdr_match_addr () from /lib/libc.so.7
> (gdb) where
> #0  0x00000008045c432d in __elf_phdr_match_addr () from /lib/libc.so.7
> #1  0x0000000803038abb in __pthread_cxa_finalize () from /lib/libthr.so.3
> #2  0x00000008045bdfa7 in __cxa_finalize () from /lib/libc.so.7
> #3  0x00000008045682c7 in exit () from /lib/libc.so.7
> #4  0x0000000000556817 in Fkill_emacs (arg=Could not find the frame base for "Fkill_emacs".
> ) at emacs.c:2146
> #5  0x0000000000600ec0 in Ffuncall (nargs=1, args=0x7fffffffc880) at eval.c:3024
> #6  0x0000000000658d47 in Fbyte_code (bytestr=8602321, vector=8602357, maxdepth=20) at bytecode.c:680
> #7  0x00000000006017e6 in funcall_lambda (fun=8602229, nargs=0, arg_vector=0x7fffffffcdc8) at eval.c:3211
> #8  0x00000000006011e0 in Ffuncall (nargs=1, args=0x7fffffffcdc0) at eval.c:3070
> #9  0x0000000000658d47 in Fbyte_code (bytestr=9558105, vector=9558141, maxdepth=20) at bytecode.c:680
> #10 0x00000000006017e6 in funcall_lambda (fun=9558029, nargs=1, arg_vector=0x7fffffffd358) at eval.c:3211
> #11 0x00000000006011e0 in Ffuncall (nargs=2, args=0x7fffffffd350) at eval.c:3070
> #12 0x00000000005fb954 in Fcall_interactively (function=11961778, record_flag=11544578, keys=20138021) at callint.c:869
> #13 0x0000000000600f36 in Ffuncall (nargs=4, args=0x7fffffffd760) at eval.c:3030
> #14 0x00000000006008fd in call3 (fn=11756290, arg1=11961778, arg2=11544578, arg3=20138021) at eval.c:2850
> #15 0x000000000056b7ac in Fcommand_execute (cmd=11961778, record_flag=11544578, keys=20138021, special=11544674) at keyboard.c:10507
> #16 0x000000000055cc69 in read_char (commandflag=1, nmaps=2, maps=0x7fffffffdb70, prev_event=11544578, used_mouse_menu=0x7fffffffded4, end_time=0x0)
>     at keyboard.c:3166
> #17 0x000000000056880e in read_key_sequence (keybuf=0x7fffffffe280, bufsize=30, prompt=11544578, dont_downcase_last=0, can_return_switch_frame=1, 
>     fix_current_buffer=1) at keyboard.c:9512
> #18 0x0000000000558a33 in command_loop_1 () at keyboard.c:1643
> #19 0x00000000005fe0aa in internal_condition_case (bfun=0x5586a0 <command_loop_1>, handlers=11629954, hfun=0x557f90 <cmd_error>) at eval.c:1490
> #20 0x000000000055836a in command_loop_2 () at keyboard.c:1360
> #21 0x00000000005fda2c in internal_catch (tag=11621170, func=0x558350 <command_loop_2>, arg=11544578) at eval.c:1226
> #22 0x0000000000558320 in command_loop () at keyboard.c:1339
> #23 0x0000000000557a85 in recursive_edit_1 () at keyboard.c:954
> #24 0x0000000000557c45 in Frecursive_edit () at keyboard.c:1016
> #25 0x00000000005560b8 in main (argc=1, argv=0x7fffffffe840) at emacs.c:1833
> 
> Reverting to lib/libc/stdlib/atexit.c 1.9 gets it working again,
> using 1.11 brings back the crashes. I didn't csup between those
> versions and thus don't have 1.10 in git, but given that it's a
> style change it shouldn't matter.
> 
> I'm using amd64 and so far I only noticed the problem with emacs.
> 
> Is anyone else seeing this?
Reverting the atexit change might cover the issue in some other place.
Please build and install rtld, libc and libthr with symbolic
debug information. On of the way to do this is to:
cd /usr/src/libexec/rtld-elf
make obj && make depend && make all install DEBUG_FLAGS=-g
cd ../../lib/libc
make obj && make depend && make all install DEBUG_FLAGS=-g
cd ../../lib/libthr
make obj && make depend && make all install DEBUG_FLAGS=-g

Then, reproduce the crash and get "bt full" output from the
core. I may need some further information after that.

Thank you for the report.

Received on Fri Aug 27 2010 - 17:04:22 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:06 UTC