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 48537 - Sawfish 0.38 and 1.0 core dumps when 'Play sound effects' option is enabled
Sawfish 0.38 and 1.0 core dumps when 'Play sound effects' option is enabled
Status: RESOLVED FIXED
Product: Sawfish
Classification: Deprecated
Component: General
pre-1.3.x
Other Linux
: Normal normal
: 1.5.x
Assigned To: John Harper
John Harper
Depends on:
Blocks:
 
 
Reported: 2001-08-29 08:29 UTC by Brian Nitz
Modified: 2009-08-16 15:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Proposed patch replaces dlmalloc with libc's malloc on Solaris (371 bytes, patch)
2001-10-04 16:31 UTC, brian.nitz
none Details | Review
This bug is sparc-solaris specific so this patch uses libc's malloc on this platform. (369 bytes, patch)
2001-10-05 14:02 UTC, brian.nitz
none Details | Review

Description Brian Nitz 2001-09-10 01:18:59 UTC
Sawfish core dumps under SOLARIS under the following conditions:
(a)the  'Sounds for events' option in the 'Multimedia:Sound' config screen &
(b)the 'Play sound effects for window events' option in the 'Sawfish Window
Manager:Sound' config screen.

To recreate:
1) Start a gnome terminal and minimise
2) Start gnomecc and on the 'Multimedia:Sound' config screen enable the 'Sounds
for events' option. Click OK.
3) On the 'Sawfish Window Manager:Sound' config screen enable the'Play sound
effects for window events' option. Click OK.
4) Go back to the 'Sawfish Window Manager:Sound' config screen and select a
sound and click 'Edit'. Do not edit the sound and click OK.
5) Maximise the gnome terminal.
6) Minimise the gnome terminal
7) Click on the  'Sawfish Window Manager:Sound' config screen - The result is
that the sawfish window manager core dumps 

Possible causes?:
	1) librep may need to be 64-bit cleaned.
	2) rep thread handling (rep_TEST_INT...) may not restore stack properly
	3) gnome-config writes bad lisp code in case where audio filename isn't
edited.  

(gdb backtrace from Sawfish 0.38 crash)
  • #0 calloc
  • #1 dgettext
    from /usr/lib/libc.so.1
  • #2 psignal
    from /usr/lib/libc.so.1
  • #3 rep_proc_periodically
    from /opt/gnome-1.4/lib/librep.so.9
  • #4 <signal handler called>
  • #5 malloc
  • #6 gnome_sound_sample_load_wav
    from /opt/gnome-1.4/libexec/sawfish/0.38/sparc-sun-solaris2.8/sawfish/wm/util/play-sample.so
  • #7 gnome_sound_sample_load
    from /opt/gnome-1.4/libexec/sawfish/0.38/sparc-sun-solaris2.8/sawfish/wm/util/play-sample.so
  • #8 Fprimitive_play_sample
    from /opt/gnome-1.4/libexec/sawfish/0.38/sparc-sun-solaris2.8/sawfish/wm/util/play-sample.so
  • #9 Fraise_exception
    from /opt/gnome-1.4/lib/librep.so.9
  • #10 Fraise_exception
    from /opt/gnome-1.4/lib/librep.so.9
  • #11 Frun_byte_code
    from /opt/gnome-1.4/lib/librep.so.9
  • #12 rep_load_autoload
    from /opt/gnome-1.4/lib/librep.so.9
  • #13 Ffuncall
    from /opt/gnome-1.4/lib/librep.so.9
  • #14 Fcall_hook
    from /opt/gnome-1.4/lib/librep.so.9
  • #15 Fcall_window_hook
  • #16 map_request
  • #17 Fsynthetic_configure_mutex
  • #18 rep_call_with_barrier
    from /opt/gnome-1.4/lib/librep.so.9
  • #19 handle_input_mask
  • #20 handle_sync_input
  • #21 rep_file_length
    from /opt/gnome-1.4/lib/librep.so.9
  • #22 rep_event_loop
    from /opt/gnome-1.4/lib/librep.so.9
  • #23 rep_top_level_recursive_edit
    from /opt/gnome-1.4/lib/librep.so.9
  • #24 Fexit_type
  • #25 rep_call_with_barrier
    from /opt/gnome-1.4/lib/librep.so.9
  • #26 main
  • #0 calloc
  • #1 dgettext
    from /usr/lib/libc.so.1
  • #2 psignal
    from /usr/lib/libc.so.1
  • #3 rep_proc_init
    at unix_processes.c line 2087
  • #4 <signal handler called>
  • #5 malloc
  • #6 _gdbm_init_cache
    from /opt/gnome-1.4.1/lib/libgdbm.so.2
  • #7 _gdbm_get_bucket
    from /opt/gnome-1.4.1/lib/libgdbm.so.2
  • #8 _gdbm_findkey
    from /opt/gnome-1.4.1/lib/libgdbm.so.2
  • #9 gdbm_fetch
    from /opt/gnome-1.4.1/lib/libgdbm.so.2
  • #10 Fgdbm_close
    at repgdbm.c line 94
  • #11 vm
    at lispmach.h line 1139
  • #12 vm
    at lispmach.h line 1246
  • #13 vm
    at lispmach.h line 1246
  • #14 rep_handle_input_exception
    at main.c line 403
  • #15 Fsignal
    at lisp.c line 2423
  • #16 Fassq
    at lispcmds.c line 403
  • #17 Fvector
    at lispcmds.c line 836
  • #18 vm
    at lispmach.h line 2056
  • #19 rep_handle_input_exception
    at main.c line 403
  • #20 rep_lisp_prin
    at lisp.c line 2073
  • #21 rep_string_print
    at lisp.c line 2263
  • #22 rep_copy_list
    at lisp.c line 2294
  • #23 Frassq
    at lispcmds.c line 449
  • #24 Ffind_symbol
    at symbols.c line 263
  • #25 vm
    at lispmach.h line 1294
  • #26 vm
    at lispmach.h line 1246
  • #27 rep_handle_input_exception
    at main.c line 403
  • #28 Fsignal
    at lisp.c line 2423
  • #29 Fassq
    at lispcmds.c line 403
  • #30 pixmap_cache_init
  • #31 Fset_process_output_stream
    at unix_processes.c line 1728
  • #32 Fprocess_dir
    at unix_processes.c line 1793
  • #33 Ftranslate_string
    at misc.c line 487
  • #34 Fexit_type
  • #35 rep_call_with_barrier
    at continuations.c line 338
  • #36 main



------- Additional Comments From jsh@pixelslut.com 2001-08-31 08:12:10 ----

>Possible causes?:
>1) librep may need to be 64-bit cleaned.

librep should be 64-bit clean already - I know that people have run it on
alpha/ia-64 architectures

>2) rep thread handling (rep_TEST_INT...) may not restore stack properly

rep_TEST_INT doesn't reallt have anything to do with rep's thread handling
(though it does decide when to preempt software threads). In any case, none of
sawfish uses rep's threads

>3) gnome-config writes bad lisp code in case where audio filename isn't edited.  

it's very unlikely that bad lisp code could cause these symptoms

The backtraces show that both crashes happen in malloc. It looks like the malloc
implementation may be the dlmalloc.c included with sawfish, this is known to
have issues on 64 bit systems, e.g. it's disabled on Compaq Tru64 systems. The
same may need to be done for 64-bit solaris..

To do this I need to know the architecture string that configure gives for your
system. (I also need to be able to tell 32 bit from 64 bit machines)

Disabling dlmalloc may have a negative effect on performance - the reason I
first started using it was that the solaris malloc implementation was way too
slow for the usage patterns generated by librep



------- Additional Comments From brian.nitz@sun.com 2001-09-07 02:14:08 ----

The string returned by configure for this version of Solaris is:
sparc-sun-solaris2.8

To determine the current bitmode of the kernel:
$ isainfo -b
64Although the kernel is in 64 bit mode, the sawfish executable was built as an
ELF 32-bit MSB executable SPARC Version 1, dynamically linked not stripped.

If there are dlmalloc problems when used on 64-bit kernels, instead of bypassing
dlmalloc and possibly reducing performance, might setting INTERNAL_SIZE_T to a
32 bit `unsigned int' instead of size_t help?



------- Additional Comments From jsh@pixelslut.com 2001-09-07 08:05:38 ----

Hmm. So if it's running in 32-bit mode, why was one of your `suggestions' that
librep needed to be made 64-bit clean?

I have node idea if tweaking the dlmalloc options may help. I did try that once
(or at least, got someone else to). But I don't recall it helping.

Anyway, you're the one with the 64-bit sparc, so you're probably better placed
to invertigate it. I recommend disabling dlmalloc and seeing if that fixes the
problem.. If not, it's probably a memory smasher somewhere..



------- Bug moved to this database by unknown@bugzilla.gnome.org 2001-09-09 21:18 -------
Comment 1 brian.nitz 2001-10-04 16:31:17 UTC
Created attachment 5759 [details] [review]
Proposed patch replaces dlmalloc with libc's malloc on Solaris
Comment 2 brian.nitz 2001-10-05 14:02:48 UTC
Created attachment 5762 [details] [review]
This bug is sparc-solaris specific so this patch uses libc's malloc on this platform.
Comment 3 ianw 2001-10-12 16:26:39 UTC
I am running Sawfish on both 32-bit and 64-bit Solaris 8/SPARC
machines.  However, the crash does NOT occur on the 64-bit machine
(an Ultra2 clone), but DOES occur on the 32-bit macine (a Sun Ultra5).