I am currently running suse 6.1 with kernel version 2.2.11-ac3 and the sblive moudle emu10k1. When running the following program (which is part of SDL .10 - http://www.devolution.com/~slouken/SDL/): /* Program to load a wave file and loop playing it using SDL sound */ /* loopwaves.c is much more robust in handling WAVE files -- This is only for simple WAVEs */ #include <stdio.h> #include <stdlib.h> #include <signal.h> #include "SDL.h" #include "SDL_audio.h" struct { SDL_AudioSpec spec; Uint8 *sound; /* Pointer to wave data */ Uint32 soundlen; /* Length of wave data */ int soundpos; /* Current play position */ } wave; void fillerup(void *unused, Uint8 *stream, int len) { Uint8 *waveptr; int waveleft; /* Set up the pointers */ waveptr = wave.sound + wave.soundpos; waveleft = wave.soundlen - wave.soundpos; /* Go! */ while ( waveleft <= len ) { SDL_MixAudio(stream, waveptr, waveleft, SDL_MIX_MAXVOLUME); stream += waveleft; len -= waveleft; waveptr = wave.sound; waveleft = wave.soundlen; wave.soundpos = 0; } SDL_MixAudio(stream, waveptr, len, SDL_MIX_MAXVOLUME); wave.soundpos += len; } static int done = 0; void poked(int sig) { done = 1; } main(int argc, char *argv[]) { /* Load the SDL library */ if ( SDL_Init(SDL_INIT_AUDIO) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); exit(1); } atexit(SDL_Quit); if ( argv[1] == NULL ) { fprintf(stderr, "Usage: %s <wavefile>\n", argv[0]); exit(1); } /* Load the wave file into memory */ if ( SDL_LoadWAV(argv[1], &wave.spec, &wave.sound, &wave.soundlen) == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", argv[1], SDL_GetError()); exit(1); } wave.spec.callback = fillerup; /* Set the signals */ #ifdef SIGHUP signal(SIGHUP, poked); #endif signal(SIGINT, poked); #ifdef SIGQUIT signal(SIGQUIT, poked); #endif signal(SIGTERM, poked); /* Initialize fillerup() variables */ if ( SDL_OpenAudio(&wave.spec, NULL) < 0 ) { fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); SDL_FreeWAV(wave.sound); exit(2); } SDL_PauseAudio(0); /* Let the audio run */ while ( ! done ) SDL_Delay(1000); /* Clean up on signal */ SDL_CloseAudio(); SDL_FreeWAV(wave.sound); exit(0); } I recive an oops which i use ksymoops, the output is as follows: WARNING: This version of ksymoops is obsolete. WARNING: The current version can be obtained from ftp://ftp.ocs.com.au/pub/ksymoops Options used: -V (default) -o /lib/modules/2.2.11-ac3/ (default) -k /proc/ksyms (default) -l /proc/modules (default) -m /usr/src/linux/System.map (default) -c 1 (default) You did not tell me where to find symbol information. I will assume that the log matches the kernel and modules that are running right now and I'll use the default options above for symbol resolution. If the current kernel and/or modules do not match the log, you can get more accurate output by telling me the kernel version and where to find map, modules, ksyms etc. ksymoops -h explains the options. Oops: 0000 CPU: 0 EIP: 0010:[<d08455d6>] EFLAGS: 00010202 eax: 00000000 ebx: d0850000 ecx: c2456000 edx: ccac5620 esi: ccac5620 edi: c2456000 ebp: c1633f28 esp: c1633f18 ds: 0018 es: 0018 ss: 0018 Process loopwave (pid: 8213, process nr: 46, stackpage=c1633000) Stack: 00000003 00000004 c1633fa8 00000023 00000000 c012dc57 ccac5620 c2456000 00000023 00000004 caa21758 00000023 00000145 00000003 c1632000 7fffffff c2456000 c2456000 c012e128 00000004 c1633fa8 c1633fa4 c1632000 00000000 Call Trace: [<c012dc57>] [<c012e128>] [<c0124ab7>] [<c0108ee4>] Code: 8b 40 1c 83 c0 4c 85 ff 74 0f 85 c0 74 0b 57 50 56 e8 ec 83 >>EIP: d08455d6 <mod_firmware_load+70b6/????> Trace: c012dc57 <do_select+133/214> Trace: c012e128 <sys_select+3f0/548> Trace: c0124ab7 <sys_write+db/100> Trace: c0108ee4 <system_call+34/40> Code: d08455d6 <mod_firmware_load+70b6/????> 00000000 <_EIP>: <=== Code: d08455d6 <mod_firmware_load+70b6/????> 0: 8b 40 1c movl 0x1c(%eax),%eax <=== Code: d08455d9 <mod_firmware_load+70b9/????> 3: 83 c0 4c addl $0x4c,%eax Code: d08455dc <mod_firmware_load+70bc/????> 6: 85 ff testl %edi,%edi Code: d08455de <mod_firmware_load+70be/????> 8: 74 0f je d08455ef <mod_firmware_load+70cf/????> Code: d08455e0 <mod_firmware_load+70c0/????> a: 85 c0 testl %eax,%eax Code: d08455e2 <mod_firmware_load+70c2/????> c: 74 0b je d08455ef <mod_firmware_load+70cf/????> Code: d08455e4 <mod_firmware_load+70c4/????> e: 57 pushl %edi Code: d08455e5 <mod_firmware_load+70c5/????> f: 50 pushl %eax Code: d08455e6 <mod_firmware_load+70c6/????> 10: 56 pushl %esi Code: d08455e7 <mod_firmware_load+70c7/????> 11: e8 ec 83 00 00 call d084d9d8 <END_OF_CODE+f4b8/????> 4 warnings issued. Results may not be reliable. Sincerly, Michael
