Google 网上论坛不再支持新的 Usenet 帖子或订阅项。历史内容仍可供查看。

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

已查看 1 次
跳至第一个未读帖子

Fabian Keil

未读,
2010年8月27日 12:21:082010/8/27
收件人
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@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?

Fabian

signature.asc

jhell

未读,
2010年8月27日 14:18:442010/8/27
收件人
On 08/27/2010 12:21, 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:
>

r211704 was just a style(9) fix and should coincide with cvs/1.10 that
your talking about. r211706 or cvs/1.11 is the culprit that has caused
your problem but I have no way to verify that here without merging it
locally.

If this is the case please mark the MFC of r211706 cvs/1.11 as a do-not-do.


Regards,

--

jhell,v
_______________________________________________
freebsd...@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-curre...@freebsd.org"

Kostik Belousov

未读,
2010年8月27日 15:04:072010/8/27
收件人
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:
>
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.

Fabian Keil

未读,
2010年8月27日 15:25:342010/8/27
收件人
Kostik Belousov <kost...@gmail.com> wrote:

#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

signature.asc

Kostik Belousov

未读,
2010年8月27日 15:37:202010/8/27
收件人
> 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

Ewww. Please try this.

diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c
index 97cf234..511172a 100644
--- a/lib/libc/stdlib/atexit.c
+++ b/lib/libc/stdlib/atexit.c
@@ -200,6 +200,6 @@ __cxa_finalize(void *dso)
if (dso == NULL)
_MUTEX_DESTROY(&atexit_mutex);

- if (&__pthread_cxa_finalize != NULL)
+ if (has_phdr && &__pthread_cxa_finalize != NULL)
__pthread_cxa_finalize(&phdr_info);
}

Fabian Keil

未读,
2010年8月27日 15:46:352010/8/27
收件人
Kostik Belousov <kost...@gmail.com> wrote:

> On Fri, Aug 27, 2010 at 09:25:34PM +0200, Fabian Keil wrote:
> > Kostik Belousov <kost...@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:

> > > > Reverting to lib/libc/stdlib/atexit.c 1.9 gets it working again,

> Ewww. Please try this.
>
> diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c
> index 97cf234..511172a 100644
> --- a/lib/libc/stdlib/atexit.c
> +++ b/lib/libc/stdlib/atexit.c
> @@ -200,6 +200,6 @@ __cxa_finalize(void *dso)
> if (dso == NULL)
> _MUTEX_DESTROY(&atexit_mutex);
>
> - if (&__pthread_cxa_finalize != NULL)
> + if (has_phdr && &__pthread_cxa_finalize != NULL)
> __pthread_cxa_finalize(&phdr_info);
> }

That fixed it. Thanks a lot.

Fabian

signature.asc

Kostik Belousov

未读,
2010年8月27日 16:00:032010/8/27
收件人
On Fri, Aug 27, 2010 at 09:46:35PM +0200, Fabian Keil wrote:
> > diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c
> > index 97cf234..511172a 100644
> > --- a/lib/libc/stdlib/atexit.c
> > +++ b/lib/libc/stdlib/atexit.c
> > @@ -200,6 +200,6 @@ __cxa_finalize(void *dso)
> > if (dso == NULL)
> > _MUTEX_DESTROY(&atexit_mutex);
> >
> > - if (&__pthread_cxa_finalize != NULL)
> > + if (has_phdr && &__pthread_cxa_finalize != NULL)
> > __pthread_cxa_finalize(&phdr_info);
> > }
>
> That fixed it. Thanks a lot.

Thank for your help, fixed in r211894.

0 个新帖子