From: bdarnell AT vnet DOT net (Ben Darnell) Newsgroups: comp.os.msdos.djgpp Subject: Mikmod problems and symify wierdness (long) Date: Mon, 20 Jan 1997 03:45:16 GMT Organization: Vnet Internet Access, Inc. Lines: 76 Message-ID: <32e2e995.11893177@news.vnet.net> NNTP-Posting-Host: vts-char2-s14.vnet.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp I am trying to use Mikmod (version 2.09b), but I'm having some problems. This is the code I am using: -----------------------------mod.c----------------------------------- #include #include #include void tickhandler() { MP_HandleTick(); MD_SetBPM(mp_bpm); }; int main() { UNIMOD* mod; md_mixfreq=44100; md_dmabufsize=10000; md_mode=DMODE_16BITS|DMODE_STEREO; md_device=0; ML_RegisterLoader(&load_uni); MD_RegisterDriver(&drv_sb); MD_RegisterPlayer(tickhandler); if (!MD_Init()) return 1; mod=ML_LoadFN("test.uni"); if (!mod) return 1; MP_Init(mod); md_numchn=mod->numchn; puts("spam, eggs, sausage and spam"); /* 27 */ MD_PlayStart(); /* 28 */ puts("i don't like spam"); /* 29 */ /* 30 */ while (!(MP_Ready()||kbhit())) /* 31 */ MD_Update(); MD_PlayStop(); ML_Free(mod); MD_Exit(); return 0; }; -------------------------------------------------------- When I compile (with -g and -Wall, no other switches) and run it, it crashes. Here is the symify'd output: ----------------------error.log----------------------------------- Exiting due to signal SIGSEGV General Protection Fault at eip=0000aa3a eax=00000000 ebx=0005f320 ecx=000009c4 edx=00002710 esi=00000054 edi=7cbf0bf0 ebp=0005d1e4 esp=0005d1e0 program=F:\MOD\MOD.EXE cs: sel=00af base=8343c000 limit=001dffff ds: sel=00b7 base=8343c000 limit=001dffff es: sel=00b7 base=8343c000 limit=001dffff fs: sel=0087 base=00028940 limit=0000ffff gs: sel=00c7 base=00000000 limit=ffffffff ss: sel=00b7 base=8343c000 limit=001dffff Call frame traceback EIPs: 0x0000aa3a _memset+46 0x00005974 _ML_LoadFN+2144 0x00003f86 _MD_PlayStart+22 0x00001659 _main+181, line 29 of mod.c 0x0000905e ___crt1_startup+138 spam, eggs, sausage and spam ----------------------------------------------------------- There appear to be several problems with this traceback: (a) MD_PlayStart is called on line 28, not 29, (b) MD_PlayStart doesn't call ML_LoadFN, and (c) ML_LoadFN doesn't call memset. The first puts() is reached, but the second one isn't (I assume it comes after the traceback because stdout is buffered) I have looked at the sample program, mikmod.c, but I don't see anything I'm missing. What's going on here? __ __ /> /_ /| / /\ /| /> /| / /_ / / /> /_ / |/ /_/ /-| / \ / |/ /_ /_ /_ http://users.vnet.net/bdarnell bdarnell AT vnet DOT net