Dave Bailey writes:
any attempt by Xemacs to make a sound (ding etc) results in a SEGV.
This
is a default Fedora installation with sound configuration:
Sound:
Compiling in support for sound (native).
Compiling in support for ALSA (Advanced Linux Sound Architecture).
I'm actually using OSS with ALSA emulation, and That might not work,
but the SEGV seems inappropriate. The GDB output:
Program terminated with signal 11, Segmentation fault.
[New process 5564]
#0 0x0000003b1fa331f7 in kill () from /lib64/libc-2.9.so
(gdb) where
#0 0x0000003b1fa331f7 in kill () from /lib64/libc-2.9.so
#1 0x0000000000489fe7 in fatal_error_signal (sig=11) at emacs.c:3800
#2 <signal handler called>
#3 memcpy () at ../sysdeps/x86_64/memcpy.S:102
#4 0x00000000004b21fa in waverequire (data=0x7fff73a3d720,
sz=0x7fff73a3d740,
rq=8) at /usr/include/bits/string3.h:52
What does gdb say is the value of "print *sz" here?
#5 0x00000000004b2a30 in parsewave (data=0x7fff73a3d720,
sz=0x7fff73a3d740,
outbuf=0x7fff73a3d718) at miscplay.c:174
#6 0x00000000004afafb in linux_play_data_or_file (fd=-1,
data=0x7fff73a3e0a0 "RIFF\"\002", length=0, volume=-1) at
linuxplay.c:326
Ouch. Here's what linuxplay.c says is in the first few lines of that
function:
static int
linux_play_data_or_file(int fd, Binbyte *data,
int length, int volume)
{
size_t (*parsesndfile)(void **dayta,size_t *sz,void **outbuf);
size_t (*sndcnv)(void **dayta,size_t *sz,void **);
fmtType ffmt;
int fmt,speed,tracks;
void *pptr, *optr, *cptr, *sptr;
int wrtn, crtn;
size_t prtn, rrtn;
Binbyte sndbuf[SNDBUFSZ];
/* We need to read at least the header information before we can start
doing anything */
if (!data || length < HEADERSZ) {
if (fd < 0) return 0;
That is, it should exit immediately, with the failure value (HEADERSZ
is defined to be 256 in miscplay.h).
Try setting a breakpoint at linux_play_data_or_file, and single
stepping through that line to see how XEmacs manages not to return
failure here.
There's also a problem that apparently TO_EXTERNAL_FORMAT in
Fplay_sound returns zero for the length of that string which is
obviously not zero-length.
Please at least supply us with the full Installation file for XEmacs
(or XEmacs can tell you with M-x describe-installation RET) and a copy
of the sound being played, or if it's a standard one the name which
you should be able to get here:
#7 0x000000000057b76d in Fplay_sound (sound=<value optimized
out>,
volume=<value optimized out>, device=<value optimized out>) at
sound.c:440
#8 0x000000000057bdb2 in Fding (no_terminate=9396528, sound=9142848,
device=<value optimized out>) at sound.c:537
with
(gdb) source .gdbinit # find this in the src/ subdirectory
(gdb) pobj sound
which presumably is a Lisp symbol or possibly a string.
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta