[Bug breakpoints/15679] New: 'catch throw' crashes with ' auto-solib-add off'

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] New: 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

            Bug ID: 15679
           Summary: 'catch throw' crashes with ' auto-solib-add off'
           Product: gdb
           Version: 7.5
            Status: NEW
          Severity: normal
          Priority: P2
         Component: breakpoints
          Assignee: unassigned at sourceware dot org
          Reporter: faorg-lists at yahoo dot co.uk

With 'set auto-solib-add off' in ~/.gdbinit an existing catch throw causes gdb
to exit:

gdb process terminated with a core dump.
Closing this gdb session.

1) start & interrupt a program (debuggee)
2) 'shared' to load symbols
3) 'catch throw'
4) kill & restart program
5) gdb exits

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

Tom Tromey <tromey at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |WAITING
                 CC|                            |tromey at redhat dot com

--- Comment #1 from Tom Tromey <tromey at redhat dot com> ---
I tried this with 7.5 and with current cvs gdb, and it worked fine for
me:

gdb -nx
set auto-solib-add off
file ./gdb.cp/nextoverthrow   # <- c++ test case from gdb
start
shared
catch throw
start

Could you supply more details?
Maybe your platform info would help.
Or maybe a stack trace from the gdb core file.

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #2 from faorg-lists at yahoo dot co.uk ---
Platform: SLED11.1
gdb 7.5.1
g++ (GCC) 4.6.0

There are no symbols in the core file:
Core was generated by `gdb -tty=/dev/null -x /tmp/gdbscript6vyBJt.clewn
--interpreter=mi'.
Program terminated with signal 6, Aborted.
#0  0x00007f5c8aa7c945 in raise () from /lib64/libc.so.6
#1  0x00007f5c8aa7df21 in abort () from /lib64/libc.so.6
#2  0x0000000000645f66 in ?? ()
#3  0xffffffffffffffff in ?? ()
...

I can't currently replicate it either, although yesterday the only way to avoid
the crash was to turn auto-solib-add on.  Possibly some other state or
breakpoints are relevant.

I will download gdb 7.6 and build it with debug symbols, so next time there
should be more info.

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #3 from faorg-lists at yahoo dot co.uk ---
With gdb 7.6 (configure --enable-debug) I get the following:

#0  0x00007f5c4f3fe945 in raise () from /lib64/libc.so.6
#1  0x00007f5c4f3fff21 in abort () from /lib64/libc.so.6
#2  0x0000000000655536 in dump_core () at utils.c:761
#3  0x00000000006579fa in internal_vproblem (ap=<optimized out>, fmt=<optimized
out>, line=<optimized out>, file=<optimized out>, problem=0xb3ec80
<internal_error_problem>) at utils.c:929
#4  internal_vproblem (problem=0xb3ec80 <internal_error_problem>,
file=<optimized out>, line=<optimized out>, fmt=<optimized out>, ap=<optimized
out>) at utils.c:820
#5  0x0000000000657c89 in internal_verror (file=<optimized out>,
line=<optimized out>, fmt=<optimized out>, ap=<optimized out>) at utils.c:944
#6  0x0000000000657d22 in internal_error (file=<optimized out>, line=<optimized
out>, string=<optimized out>) at utils.c:954
#7  0x0000000000526e81 in print_one_breakpoint_location (b=0x345eb90,
loc=0x33d3d60, loc_number=<optimized out>, last_loc=0x7fff1c3de9c8, allflag=0)
at breakpoint.c:5940
#8  0x0000000000526f29 in print_one_breakpoint (b=0x345eb90,
last_loc=0x7fff1c3de9c8, allflag=0) at breakpoint.c:6233
#9  0x000000000052703c in do_captured_breakpoint_query (uiout=<optimized out>,
data=<optimized out>) at breakpoint.c:6305
#10 0x0000000000594632 in catch_exceptions_with_msg (func_uiout=<optimized
out>, func=0x526fe0 <do_captured_breakpoint_query>, func_args=0x7fff1c3dea40,
gdberrmsg=0x0, mask=6) at exceptions.c:498
#11 0x000000000052cd1d in gdb_breakpoint_query (uiout=<optimized out>,
bnum=<optimized out>, error_message=<optimized out>) at breakpoint.c:6321
#12 0x00000000004d93c6 in mi_breakpoint_created (b=0x345eb90) at
./mi/mi-interp.c:650
#13 0x00000000005cb92d in generic_observer_notify (args=0x7fff1c3deaa0,
subject=<optimized out>) at observer.c:167
#14 observer_notify_breakpoint_created (b=<optimized out>) at observer.inc:558
#15 0x000000000052e3a9 in install_breakpoint (internal=0, b=0x345eb90,
update_gll=0) at breakpoint.c:8443
#16 0x000000000052ecca in create_breakpoint_sal (display_canonical=0, flags=0,
internal=0, enabled=1, from_tty=1, ops=0xb4e1a0
<gnu_v3_exception_catchpoint_ops>, ignore_count=0, task=0, thread=-1,
disposition=disp_donttouch, type=bp_breakpoint, extra_string=0x0,
cond_string=0x0, filter=0x0,
    addr_string=0x3e73a20 "__cxa_throw", gdbarch=0xdb9100, sals=...) at
breakpoint.c:9192
#17 create_breakpoints_sal (gdbarch=0xdb9100, canonical=0x7fff1c3dec70,
cond_string=0x0, extra_string=0x0, type=bp_breakpoint,
disposition=disp_donttouch, thread=-1, task=0, ignore_count=0, ops=0xb4e1a0
<gnu_v3_exception_catchpoint_ops>, from_tty=1, enabled=1, internal=0, flags=0)
at breakpoint.c:9236
#18 0x000000000053000a in create_breakpoint (gdbarch=0xdb9100, arg=0x784bc0 "",
cond_string=0x0, thread=-1, extra_string=0x0, parse_condition_and_thread=0,
tempflag=0, type_wanted=bp_breakpoint, ignore_count=0,
pending_break_support=AUTO_BOOLEAN_TRUE, ops=0xb4e1a0
<gnu_v3_exception_catchpoint_ops>, from_tty=1,
    enabled=1, internal=0, flags=0) at breakpoint.c:9681
#19 0x000000000053090d in handle_gnu_v3_exceptions (from_tty=1,
ex_event=<optimized out>, cond_string=0x0, tempflag=0) at breakpoint.c:11689
#20 catch_exception_command_1 (ex_event=<optimized out>, arg=0x751f33 "",
tempflag=0, from_tty=1) at breakpoint.c:11724
#21 0x0000000000653ac5 in execute_command (p=0x7fff1c3dee4b "", from_tty=1) at
top.c:484
#22 0x00000000004d3e40 in safe_execute_command (command_uiout=<optimized out>,
command=0x7fff1c3dee40 "catch throw", from_tty=1) at ./cli/cli-interp.c:124
#23 0x00000000004d3eda in cli_interpreter_exec (data=<optimized out>,
command_str=<optimized out>) at ./cli/cli-interp.c:107
#24 0x0000000000595547 in interp_exec (interp=<optimized out>,
command_str=<optimized out>) at interps.c:365
#25 0x00000000004d9f25 in mi_cmd_interpreter_exec (command=<optimized out>,
argv=0xd844f0, argc=<optimized out>) at ./mi/mi-interp.c:266
#26 0x00000000004dd78d in mi_cmd_execute (parse=0x345ea30) at
./mi/mi-main.c:2133
#27 captured_mi_execute_command (context=0x345ea30, uiout=0xcf1f50) at
./mi/mi-main.c:1884
#28 mi_execute_command (cmd=0x345e9d0 "109-interpreter-exec console \"catch
throw\"", from_tty=<optimized out>) at ./mi/mi-main.c:2003
#29 0x00000000004d8acd in mi_execute_command_wrapper (cmd=<optimized out>) at
./mi/mi-interp.c:311
#30 mi_execute_command_input_handler (cmd=<optimized out>) at
./mi/mi-interp.c:319
#31 0x000000000059c5d4 in process_event () at event-loop.c:342
#32 process_event () at event-loop.c:314
#33 0x000000000059c9a8 in gdb_do_one_event () at event-loop.c:406
#34 0x000000000059cb45 in start_event_loop () at event-loop.c:431
#35 0x0000000000596173 in captured_command_loop (data=<optimized out>) at
main.c:258
#36 0x00000000005947cb in catch_errors (func=0x596160 <captured_command_loop>,
func_args=0x0, errstring=0x751f33 "", mask=6) at exceptions.c:546
#37 0x00000000005969e6 in captured_main (data=<optimized out>) at main.c:1041
#38 0x00000000005947cb in catch_errors (func=0x596350 <captured_main>,
func_args=0x7fff1c3df260, errstring=0x751f33 "", mask=6) at exceptions.c:546
#39 0x0000000000597374 in gdb_main (args=<optimized out>) at main.c:1050
#40 0x0000000000465d0e in main (argc=<optimized out>, argv=<optimized out>) at
gdb.c:34

There is a simpler way for me to replicate this:
1) start
2) interrupt
3) catch throw (terminates)

In ~/.gdbinit I have:

set auto-solib-add off
define hookpost-start
  sharedlibrary x.so
  ...
  continue
end

ie. I only load a small subset of libs for speed.

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #4 from Tom Tromey <tromey at redhat dot com> ---
(In reply to faorg-lists from comment #3)
> With gdb 7.6 (configure --enable-debug) I get the following:

> #3  0x00000000006579fa in internal_vproblem (ap=<optimized out>,
> fmt=<optimized out>, line=<optimized out>, file=<optimized out>,
> problem=0xb3ec80 <internal_error_problem>) at utils.c:929

Can you show the text that it prints?

> #7  0x0000000000526e81 in print_one_breakpoint_location (b=0x345eb90,
> loc=0x33d3d60, loc_number=<optimized out>, last_loc=0x7fff1c3de9c8,
> allflag=0) at breakpoint.c:5940

Line 5940 doesn't look like a likely suspect in any tree I have checked out.
Maybe something changed on the 7.6 branch since the release.
Anyway if you could show this source line, or the error text, that
would help.

It is possible that this is a dup of #15468

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #5 from faorg-lists at yahoo dot co.uk ---
> Can you show the text that it prints?

In 'mi' mode, just:

gdb process terminated with a core dump.
Closing this gdb session.

I haven't had it go wrong with the normal UI yet.

> Line 5940 doesn't look like a likely suspect in any tree I have checked out.

 5935   if (b->ops != NULL && b->ops->print_one != NULL)
 5936     {
 5937       /* Although the print_one can possibly print all locations,
 5938          calling it here is not likely to get any nice result.  So,
 5939          make sure there's just one location.  */
 5940       gdb_assert (b->loc == NULL || b->loc->next == NULL);
 5941       b->ops->print_one (b, last_loc);
 5942     }

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #6 from faorg-lists at yahoo dot co.uk ---
Ok, now it has gone wrong with the normal UI:

breakpoint.c:5940: internal-error: print_one_breakpoint_location: Assertion
`b->loc == NULL || b->loc->next == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=15679

--- Comment #7 from faorg-lists at yahoo dot co.uk ---
re #15468, "info func __cxa_throw" lists 3 Non-debugging symbols before
executing "shared" and 20 after (when it works ok).

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=15679

Tom Tromey <tromey at sourceware dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW
                 CC|                            |tromey at sourceware dot org

--- Comment #8 from Tom Tromey <tromey at sourceware dot org> ---
See:
https://sourceware.org/ml/gdb-patches/2019-07/msg00170.html

--
You are receiving this mail because:
You are on the CC list for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug breakpoints/15679] 'catch throw' crashes with ' auto-solib-add off'

Martin.Jansa at gmail dot com
In reply to this post by Martin.Jansa at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=15679

Tom Tromey <tromey at sourceware dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #9 from Tom Tromey <tromey at sourceware dot org> ---
Marking as dup of the first-filed bug.

*** This bug has been marked as a duplicate of bug 15468 ***

--
You are receiving this mail because:
You are on the CC list for the bug.