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

Reply via email to