After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 118077 - Gnome-sound-recorder crashes
Gnome-sound-recorder crashes
Status: RESOLVED FIXED
Product: gnome-media
Classification: Deprecated
Component: Gnome-Sound-Recorder
2.3.x
Other Linux
: High critical
: ---
Assigned To: gnome media maintainers
gnome media maintainers
: 120966 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2003-07-22 20:52 UTC by Mohamed El Ayouty
Modified: 2004-12-22 21:47 UTC
See Also:
GNOME target: ---
GNOME version: 2.3/2.4


Attachments
Don't make bonobo/gtk call inside gst callback, it is a baaaad idea.. (2.21 KB, patch)
2003-09-05 13:58 UTC, Frederic Crozat
none Details | Review

Description Mohamed El Ayouty 2003-07-22 20:52:07 UTC
After opening Gnome-sound-recorder and pressing on the record button to
record a file, it crashes with :

** (gnome-sound-recorder:23838): WARNING **: FIXME: guard from double entry

Steps to reproduce:
1. Open Gnome-Sound-Recorder
2. Press on record button

Actuals Results:

Program crashes with this message:

** (gnome-sound-recorder:23838): WARNING **: FIXME: guard from double entry

Expected Results:

Program would start recording input from microphone.

Additional informations:

Tried recording with audacity and that worked perfectly.

I tried recording with Alsa, OSS and ESD set as the Default Audio Sink in
Gstreamer-properties but none of them worked.

Stack-Trace:


GNU gdb 5.3
Copyright 2002 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 "i686-pc-linux-gnu"...
(gdb) run
Starting program: /usr/bin/gnome-sound-recorder
[New Thread 16384 (LWP 23868)]
INFO (23868: 0) Initializing GStreamer Core Library version 0.6.2
INFO (23868: 0) CPU features: (00000000) MMX SSE
INFO (23868: 0) registry: loaded user_registry in 0.000265 seconds
          (/home/mayouty/.gstreamer/registry.xml)
INFO (23868: 0) registry: loaded global_registry in 0.308588 seconds
          (/var/lib/cache/gstreamer-0.6/registry.xml)
[New Thread 32769 (LWP 23869)]
[New Thread 16386 (LWP 23870)]
 
** (gnome-sound-recorder:23870): WARNING **: FIXME: guard from double entry
[New Thread 32771 (LWP 23871)]
 
Program received signal SIGINT, Interrupt.
[Switching to Thread 32771 (LWP 23871)]
0x40b97547 in poll () from /lib/libc.so.6
(gdb) thread apply all bt
 

Thread 3 (Thread 16386 (LWP 23870))

  • #0 sigsuspend
    from /lib/libc.so.6
  • #1 __pthread_wait_for_restart_signal
    from /lib/libpthread.so.0
  • #2 pthread_cond_wait
    from /lib/libpthread.so.0
  • #3 giop_recv_buffer_get
    at giop-recv-buffer.c line 702
  • #4 ORBit_small_invoke_stub
    at orbit-small.c line 642
  • #5 ORBit_small_invoke_stub_n
    at orbit-small.c line 571
  • #6 ORBit_c_stub_invoke
    at poa.c line 2492
  • #7 Bonobo_UIContainer_setNode
    at Bonobo-stubs.c line 627
  • #8 impl_xml_set
    at bonobo-ui-component.c line 650
  • #9 bonobo_ui_component_set
    at bonobo-ui-component.c line 621
  • #10 bonobo_ui_component_set_status
    at bonobo-ui-component.c line 1379
  • #11 record_state_changed
    at gsr-window.c line 1414
  • #12 gst_marshal_VOID__INT_INT
    from /usr/lib/libgstreamer-0.6.so.0
  • #13 g_closure_invoke
    at gclosure.c line 437
  • #14 signal_emit_unlocked_R
    at gsignal.c line 2822
  • #15 g_signal_emit_valist
    at gsignal.c line 2554
  • #16 g_signal_emit
    at gsignal.c line 2612
  • #17 gst_element_change_state
    from /usr/lib/libgstreamer-0.6.so.0
  • #18 gst_bin_change_state_norecurse
    from /usr/lib/libgstreamer-0.6.so.0
  • #19 gst_bin_child_state_change
    from /usr/lib/libgstreamer-0.6.so.0
  • #20 gst_element_change_state
  • #21 gst_osssrc_change_state
    from /usr/lib/gstreamer-0.6/libgstossaudio.so
  • #22 gst_element_set_state
    from /usr/lib/libgstreamer-0.6.so.0
  • #23 gst_bin_change_state
    from /usr/lib/libgstreamer-0.6.so.0
  • #24 gst_thread_main_loop
    from /usr/lib/libgstreamer-0.6.so.0
  • #25 g_thread_create_proxy
    at gthread.c line 551
  • #26 pthread_start_thread
    from /lib/libpthread.so.0
  • #27 pthread_start_thread_event
    from /lib/libpthread.so.0

Thread 1 (Thread 16384 (LWP 23868))

  • #0 sigsuspend
    from /lib/libc.so.6
  • #1 __pthread_wait_for_restart_signal
    from /lib/libpthread.so.0
  • #2 pthread_cond_wait
    from /lib/libpthread.so.0
  • #3 gst_thread_change_state
    from /usr/lib/libgstreamer-0.6.so.0
  • #4 gst_element_set_state
    from /usr/lib/libgstreamer-0.6.so.0
  • #5 marshal_VOID__USER_DATA_STRING
    at bonobo-ui-component.c line 221
  • #6 g_closure_invoke
    at gclosure.c line 437
  • #7 bonobo_closure_invoke_va_list
    at bonobo-types.c line 415
  • #8 bonobo_closure_invoke
    at bonobo-types.c line 478
  • #9 impl_Bonobo_UIComponent_execVerb
    at bonobo-ui-component.c line 158
  • #10 _ORBIT_skel_small_Bonobo_UIComponent_execVerb
    at Bonobo-common.c line 332
  • #11 ORBit_c_stub_invoke
  • #12 Bonobo_UIComponent_execVerb
    at Bonobo-stubs.c line 544
  • #13 real_exec_verb
    at bonobo-ui-engine.c line 1533
  • #14 impl_emit_verb_on
    at bonobo-ui-engine.c line 1584
  • #15 g_cclosure_marshal_VOID__POINTER
    at gmarshal.c line 601
  • #16 g_type_class_meta_marshal
    at gclosure.c line 514
  • #17 g_closure_invoke
    at gclosure.c line 437
  • #18 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #19 g_signal_emit_valist
  • #20 g_signal_emit
    at gsignal.c line 2612
  • #21 bonobo_ui_engine_emit_verb_on_w
    at bonobo-ui-engine.c line 3026
  • #22 exec_verb_cb
    at bonobo-ui-sync-toolbar.c line 191
  • #23 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #24 g_closure_invoke
    at gclosure.c line 437
  • #25 signal_emit_unlocked_R
    at gsignal.c line 2822
  • #26 g_signal_emit_valist
    at gsignal.c line 2554
  • #27 g_signal_emit
    at gsignal.c line 2612
  • #28 bonobo_ui_toolbar_item_activate
  • #29 button_widget_clicked_cb
    at bonobo-ui-toolbar-button-item.c line 217
  • #30 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #31 g_closure_invoke
    at gclosure.c line 437
  • #32 signal_emit_unlocked_R
    at gsignal.c line 2822
  • #33 g_signal_emit_valist
    at gsignal.c line 2554
  • #34 g_signal_emit
    at gsignal.c line 2612
  • #35 gtk_button_clicked
    at gtkbutton.c line 555
  • #36 gtk_real_button_released
    at gtkbutton.c line 1044
  • #37 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #38 g_type_class_meta_marshal
    at gclosure.c line 514
  • #39 g_closure_invoke
    at gclosure.c line 437
  • #40 signal_emit_unlocked_R
    at gsignal.c line 2752
  • #41 g_signal_emit_valist
    at gsignal.c line 2554
  • #42 g_signal_emit
    at gsignal.c line 2612
  • #43 gtk_button_released
    at gtkbutton.c line 547
  • #44 gtk_button_button_release
    at gtkbutton.c line 960
  • #45 _gtk_marshal_BOOLEAN__BOXED
  • #46 g_type_class_meta_marshal
    at gclosure.c line 514
  • #47 g_closure_invoke
    at gclosure.c line 437
  • #48 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #49 g_signal_emit_valist
    at gsignal.c line 2564
  • #50 g_signal_emit
    at gsignal.c line 2612
  • #51 gtk_widget_event_internal
    at gtkwidget.c line 3198
  • #52 gtk_propagate_event
    at gtkmain.c line 2268
  • #53 gtk_main_do_event
    at gtkmain.c line 1503
  • #54 gdk_event_dispatch
    at gdkevents-x11.c line 2008
  • #55 g_main_dispatch
    at gmain.c line 1720
  • #56 g_main_context_dispatch
    at gmain.c line 2268
  • #57 g_main_context_iterate
    at gmain.c line 2349
  • #58 g_main_loop_run
    at gmain.c line 2569
  • #59 gtk_main
    at gtkmain.c line 1093
  • #60 main
    at gnome-recorder.c line 198
  • #61 __libc_start_main
    from /lib/libc.so.6
  • #0 poll
    from /lib/libc.so.6

Comment 1 Ted Gould 2003-07-22 22:22:54 UTC
Is it possible that you could give the exact version of gnome-recorder
you are using.  There was another bug with the scheduler that was
being used - and it was fixed in CVS before the 2.3.4 release (and
should be in the 2.3.5 release).
Comment 2 Mohamed El Ayouty 2003-07-23 11:51:11 UTC
Im using 2.3.5
Comment 3 Kaushal Kumar 2003-08-02 10:36:01 UTC
Confirming. The bug can be simulated on gnome-sound-recorder 2.3.5 .
Comment 4 Frederic Crozat 2003-08-13 18:47:37 UTC
This seems to be a bug in ORBit2/linc2. Unfortunately, I wasn't able
to generate a correct stacktrace.

Adding michael, since he asked me for a stacktrace..
Comment 5 Michael Meeks 2003-08-14 10:09:01 UTC
The problem is - your stack trace is very nice (and interesting) - and
shows that libbonoboui is being used from multiple threads [ which is
not in fact designed to be thread-safe, but seems to be behaving OK in
this instance amusingly ;-]

The problem is your stack trace doesn't show the crash - for some
reason you got a SIGINT there. Of course - there could be a deadlock;
I can believe that Thread 3 might be holding a lock Thread 1 wants but ...

[ of course - this wouldn't have shown in Gnome 2.2 - but then it
would have been far more dangerous / less thread-safe so ... ].

Are you sure you see a crash not a deadlock, and/or can you get a
better trace?

Thanks.
Comment 6 Mohamed El Ayouty 2003-08-14 12:29:08 UTC
With 2.3.7, the behaviour has changed:

The program just locks up and doesn't respond to anything, but it
doesn't crash or segfault as indicated by the new stack trace.

STACKTRACE:
Script started on Thu Aug 14 08:23:23 2003
GNU gdb 5.3
Copyright 2002 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 "i686-pc-linux-gnu"...
(gdb) run
Starting program: /usr/bin/gnome-sound-recorder
[New Thread 16384 (LWP 19596)]
INFO (19596: 0) Initializing GStream
er Core Library version 0.6.2
INFO (19596: 0) CPU features: (00000
000) MMX SSE
INFO (19596: 0) registry: loaded use
r_registry in 0.000275 seconds
          (/home/mayouty/.gstreamer/registry.xml)
INFO (19596: 0) registry: loaded glo
bal_registry in 0.407099 seconds
          (/var/lib/cache/gstreamer-0.6/registry.xml)
[New Thread 32769 (LWP 19597)]
[New Thread 16386 (LWP 19598)]
 
** (gnome-sound-recorder:19598): WARNING **: FIXME: guard from double
entry
[New Thread 32771 (LWP 19599)]
 
Program received signal SIGTSTP, Stopped (user).

Thread 32771 (LWP 19599)

  • #0 poll
    from /lib/libc.so.6
  • #1 g_main_context_poll
    at gmain.c line 2667
  • #2 g_main_context_iterate
    at gmain.c line 2344
  • #3 g_main_loop_run
    at gmain.c line 2569
  • #4 link_io_thread_fn
    at linc.c line 341
  • #5 g_thread_create_proxy
    at gthread.c line 551
  • #6 pthread_start_thread
    from /lib/libpthread.so.0
  • #7 pthread_start_thread_event
    from /lib/libpthread.so.0

Comment 7 Mohamed El Ayouty 2003-08-14 12:34:37 UTC
Another behaviour:

After the program locks up and I get the " NOT RESPONDING DIALOG, DO
YOU WANT TO KILL", and I accept, the program exits normally as
indicated by this stack trace.

STACKTRACE:
mayouty@syKr0n bin $ gdb gnome-sound-recorder
GNU gdb 5.3
Copyright 2002 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 "i686-pc-linux-gnu"...
(gdb) run
Starting program: /usr/bin/gnome-sound-recorder
[New Thread 16384 (LWP 19613)]
INFO (19613: 0) Initializing GStreamer Core Library version 0.6.2
INFO (19613: 0) CPU features: (00000000) MMX SSE
INFO (19613: 0) registry: loaded user_registry in 0.000280 seconds
          (/home/mayouty/.gstreamer/registry.xml)
INFO (19613: 0) registry: loaded global_registry in 0.259480 seconds
          (/var/lib/cache/gstreamer-0.6/registry.xml)
[New Thread 32769 (LWP 19614)]
[New Thread 16386 (LWP 19615)]
 
** (gnome-sound-recorder:19615): WARNING **: FIXME: guard from double
entry
[New Thread 32771 (LWP 19616)]
/* I CLICKED THE KILL PROGRAM FROM THE NOT RESPONDING DIALOG HERE.
THIS IS JUST A COMMENT */
Program exited normally.
(gdb) bt
No stack.
(gdb)
Comment 8 Michael Meeks 2003-08-14 14:14:03 UTC
This is a simple deadlock in gnome-media then. The problem is that
gst_element_change_state is emitting a signal while holding a lock;
something needs to be done about that.
Comment 9 Frederic Crozat 2003-09-05 13:58:10 UTC
Created attachment 19764 [details] [review]
Don't make bonobo/gtk call inside gst callback, it is a baaaad idea..
Comment 10 Ted Gould 2003-09-05 14:58:17 UTC
*** Bug 120966 has been marked as a duplicate of this bug. ***
Comment 11 Ted Gould 2003-09-05 20:20:03 UTC
Comitted to HEAD.  Thanks for the patch!