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

Fabian Keil freebsd-listen at fabiankeil.de
Fri Aug 27 19:26:52 UTC 2010


Kostik Belousov <kostikbel at gmail.com> wrote:

> 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.

#0  0x00000008045dd44c in kill () at kill.S:3
3       RSYSCALL(kill)
[New Thread 1260600 (LWP 100244)]
(gdb) bt full
#0  0x00000008045dd44c in kill () at kill.S:3
No locals.
#1  0x00000000005545c0 in fatal_error_signal (sig=10) at emacs.c:402
No locals.
#2  <signal handler called>
No symbol table info available.
#3  __elf_phdr_match_addr (phdr_info=0x7fffffffcf90, addr=0x69ba20) at /usr/src/lib/libc/gen/elf_utils.c:39
        i = 109
#4  0x0000000803038fdb in __pthread_cxa_finalize (phdr_info=0x7fffffffcf90) at /usr/src/lib/libthr/thread/thr_fork.c:109
        af = (struct pthread_atfork *) 0xe1e7c0
        af1 = (struct pthread_atfork *) 0x0
#5  0x00000008045be0a7 in __cxa_finalize (dso=0x0) at /usr/src/lib/libc/stdlib/atexit.c:204
        phdr_info = {dlpi_addr = 0, dlpi_name = 0x7fffffffd080 "`Ñÿÿÿ\177", dlpi_phdr = 0x7fffffffe848, dlpi_phnum = 59448, dlpi_adds = 0, dlpi_subs = 34367899629, 
  dlpi_tls_modid = 15046784, dlpi_tls_data = 0x12c2538}
        p = (struct atexit *) 0x0
        fn = {fn_type = 1, fn_ptr = {std_func = 0x8007ccff0 <rtld_exit>, cxa_func = 0x8007ccff0 <rtld_exit>}, fn_arg = 0x0, fn_dso = 0x0}
        n = -1
        has_phdr = 0
#6  0x00000008045683c7 in exit (status=0) at /usr/src/lib/libc/stdlib/exit.c:67
No locals.
#7  0x0000000000556817 in Fkill_emacs (arg=Could not find the frame base for "Fkill_emacs".
) at emacs.c:2146
        gcpro1 = Could not find the frame base for "Fkill_emacs".
Current language:  auto; currently asm

Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20100827/5a7997a3/signature.pgp


More information about the freebsd-current mailing list