VOGONS

Common searches


Reply 40 of 156, by bkman

User metadata
Rank Newbie
Rank
Newbie

Hmm, this one is odd indeed. It crashes dosbox with each internal video mode change. Debugger gives an odd response also:

Program received signal SIGTRAP, Trace/breakpoint trap.
[Switching to thread 1700.0xf10]
0x7c901231 in _libwinmm_a_iname ()
(gdb) warning: HEAP[dosbox.exe]:
warning: Invalid Address specified to RtlFreeHeap( 0B350000, 155B5500 )

Also, I just switched to WinXP Sp2 so now my setup should be as generic as it gets for Windows users, and now all of your SDL.dll builds as well as mine lag behind in sound quite noticeably. Its the same for my own build of 1.2.8, os its not some bug with 1.3. The build with the dosbox release doesn't lag however. Mingw problem?

Reply 41 of 156, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

Does the Celeron do HyperThreading? If yes, then I guess there's some race condition that doesn't manifest on uniprocessor systems. That winmm result is quite stupid, it means that dosbox is in the middle of some call into any DLL. Of course, it's quite probable that it is opengl, which is currently being called. Unfortunately I didn't get any useful stack trace in that case. Very annoying.

I've had good results with these steps in gdb (you need a self-built SDL.dll for this):

a) find out which command the render thread is executing:
- load gdb as usual, start program, after the crash, enter: "thread 1", then "up" repeatedly until you get a line containing SendSyncCommand(<some hex number>, <some small integer>)
- I expect that small int value is 2 (init new mode) or 3 (deinit old mode). If you have built SDL yourself, another "up" should show you a source line with something like "SendSyncCommand(this, OGL_(DE)INIT);" on it
b) with that knowledge, let's find the crashing call:
- set a breakpoint at program start: "b main"
- start the program: "r"
- you get the prompt again. Now that SDL.dll is loaded, we can set the real breakpoint: "b SDL_ohqthread.h:474" for INIT, "b SDL_ohqthread.h:315" for DEINIT
- continue the program: "c"
- a little bit later, you should get the prompt again, this time at init or deinit. it's now up to you to decide: do you expect the crash right now, or will it work this time? "c"ontinue if you think the crash appears later
- now it's time for the real action: enter "n" repeatedly. it will single-step through the init function, showing you each source line before it is executed. Do not worry if it seens to jump back and forth, showing some lines twice - that's just a result of gcc optimization. Sometimes there will be phases where you are told something about that _winmm stuff, just continue doing "n" until you get the crash. The last shown source line before the crash is the bad one. To save typing, pressing Enter without any command will execute the last command again 😉

(If you know gdb well, you can redo these steps and print some variables at the place of the crash if you like.)

Reply 42 of 156, by bkman

User metadata
Rank Newbie
Rank
Newbie

Turned out easier than you suggested 😀

[Switching to thread 1 (thread 2908.0x7e4)]#0  0x7c90eb94 in _libwinmm_a_iname
()
(gdb) up
#1 0x7c90e306 in _libwinmm_a_iname ()
(gdb)
#2 0x6acb60ae in SDL_SemPost (sem=0x3f25a0) at SDL_syssem.c:166
in SDL_syssem.c
(gdb) 166 SDL_syssem.c: No such file or directory.
bt
#0 0x7c90eb94 in _libwinmm_a_iname ()
#1 0x7c90e306 in _libwinmm_a_iname ()
#2 0x6acb60ae in SDL_SemPost (sem=0x3f25a0) at SDL_syssem.c:166
#3 0x6acad234 in SendSyncCommand (this=0x3f42a0, command=OGL_DEINIT)
at SDL_ohqthread.h:307
#4 0x6acb07a1 in OHQ_SetVideoMode (this=0x3f42a0, current=0x3f7660,
width=640, height=400, bpp=32, flags=1) at SDL_ohqvideo.c:218
#5 0x6aca4232 in SDL_SetVideoMode (width=640, height=400, bpp=32, flags=1)
at SDL_video.c:684
#6 0x00490831 in GFX_SetSize(unsigned, unsigned, unsigned, double, double, void (*)()) (width=640, height=400, flags=20, scalex=1, scaley=1,
reset=0x48f1d0 <RENDER_ReInit()>) at sdlmain.cpp:367
#7 0x0048f321 in RENDER_ReInit() () at render.cpp:338
#8 0x0048d7cc in VGA_SetupDrawing(unsigned) (val=0) at vga_draw.cpp:522
#9 0x0047d5a5 in PIC_RunQueue() () at pic.cpp:428
#10 0x004012ce in Normal_Loop() () at dosbox.cpp:123
#11 0x00401376 in DOSBOX_RunMachine() () at dosbox.cpp:170
#12 0x004063c9 in CALLBACK_Idle() () at callback.cpp:69
#13 0x004a5a95 in INT16_Handler() () at bios_keyboard.cpp:392
#14 0x004012e5 in Normal_Loop() () at dosbox.cpp:127
#15 0x00401376 in DOSBOX_RunMachine() () at dosbox.cpp:170
#16 0x00406546 in CALLBACK_RunRealInt(unsigned char) (intnum=22)
at callback.cpp:105
#17 0x00454041 in device_CON::Read(unsigned char*, unsigned short*) (
this=0x19a16608, data=0x22e927 "w\fë\"", size=0x22e81e) at dev_con.h:63
#18 0x00454a11 in DOS_Device::Read(unsigned char*, unsigned short*) (
this=0x19a24f50, data=0x22e927 "w\fë\"", size=0x22e81e)
at dos_devices.cpp:59
#19 0x0045c6ad in DOS_ReadFile(unsigned short, unsigned char*, unsigned short*)
(entry=0, data=0x22e927 "w\fë\"", amount=0x22ea3e) at dos_files.cpp:303
#20 0x004b07b7 in DOS_Shell::InputCommand(char*) (this=0x19a24fd0,
line=0x22eb90 "") at ../../include/logging.h:44
#21 0x004adb88 in DOS_Shell::Run() (this=0x19a24fd0) at shell.cpp:281
#22 0x004ad896 in SHELL_Init() () at shell.cpp:515
#23 0x00491f1a in SDL_main (argc=1, argv=0x22fe80) at sdlmain.cpp:1132
#24 0x004b6858 in console_main ()
#25 0x004b6c37 in WinMain@16 ()
#26 0x004b64aa in main ()

Hope that helps. An no, my Celeron doesn't do hyperthreading, btw.

Reply 43 of 156, by rcblanke

User metadata
Rank Oldbie
Rank
Oldbie

Hi guys,

I'm seeing the exact same thing as bkman does. The only thing I can tell you is that for my system (Ati Mobility 9700, Pentium M) Moe's version from the 17th works just fine. Hope you can backtrace the originating problem Moe...

Regards,

Ronald

Reply 44 of 156, by bkman

User metadata
Rank Newbie
Rank
Newbie

Addendum: I thought that the trace in my prev post was enough, but just in case I followed your instructions completely, and while gdb didn't show any code, the error happens at line 320 in SDL_ohqthread.h.

Reply 45 of 156, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

Erm... SDL_SemPost crashes?? WTF?

Can you do "thread 2" plus "bt", "thread 3" plus "bt" and so on, for all threads? (gdb will tell you when there's no more thread)

Reply 46 of 156, by bkman

User metadata
Rank Newbie
Rank
Newbie
[Switching to thread 6 (thread 2572.0xce8)]#0  0x7c90eb94 in _libwinmm_a_iname
()
(gdb) bt
#0 0x7c90eb94 in _libwinmm_a_iname ()
#1 0x7c90d85c in _libwinmm_a_iname ()
#2 0x7c802451 in _libwinmm_a_iname ()
#3 0x6acb69c1 in SDL_Delay (ms=249) at SDL_systimer.c:115
#4 0x6ac81f48 in SDL_RunAudio (audiop=0x3f7770) at SDL_audio.c:190
#5 0x6acb594c in SDL_RunThread (data=0x19208458) at SDL_thread.c:218
#6 0x6acb5c41 in RunThread (data=0x19208458) at SDL_systhread.c:44
#7 0x7c80b50b in _libwinmm_a_iname ()

Threads 2-5 are just full of _libwinmm_a_iname ().

Reply 48 of 156, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

Ronald, what graphics hardware/OS/CPU?

Bkman, I'm right now testing a new release, in the hope that it fixes your troubles. Search for it later today in the download dir.

Reply 51 of 156, by eL_PuSHeR

User metadata
Rank l33t++
Rank
l33t++

Even if I use AMD as my processors brand of choice, I must admit the Pentium M is a sweet chip. 😎

Intel i7 5960X
Gigabye GA-X99-Gaming 5
8 GB DDR4 (2100)
8 GB GeForce GTX 1070 G1 Gaming (Gigabyte)

Reply 53 of 156, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

WilliamC, which build did you use (date)? Where do I get these drivers?

bkman, are you by chance using the same drivers as WilliamC?

Reply 54 of 156, by WilliamC

User metadata
Rank Newbie
Rank
Newbie

I'm using the build released yesterday from that Asian guy, forget which country he's from, it's in the CVS thread. Drivers can be found here: http://www.omegadrivers.net/ati/win2k_xp.php

Reply 55 of 156, by bkman

User metadata
Rank Newbie
Rank
Newbie

No, I've only just heard of these Omega drivers. I am using official Catalysts, although I do have rage3d tweak installed to supplement them for overclocking purposes. I have not noticed any difference in compatability due to this.

Reply 56 of 156, by `Moe`

User metadata
Rank Oldbie
Rank
Oldbie

WilliamC, don't use dosbox's internal openglhq, use the SDL version, it has several bugs fixed. Except for bkman it works fine for us. (And I really wish I knew whats wrong)

Reply 57 of 156, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

I don't use hacked drivers because they don't provide complete lists of what they've tweaked (which is usually just default driver settings but can sometimes include different DLL versions). I also don't use Rage3DTweak because it's so old that even the Rage3DTweak developers don't recommend using it any more.

I use (and recommend) the latest official, stock Catalysts with the latest versions of RadLinker and ATI Tray Tools (both of which are better than Rage3D Tweak)