Help - Search - Members - Calendar
Full Version: FB2K crash from fresh install, odd configuration
Hydrogenaudio Forums > Hosted Forums > foobar2000 > Support - (fb2k)
FalconFour
Hey,

I'm setting up a ultralight printserver/audiobox in my living room. It's an ancient Celeron-333 running as a bare board plugged into a power supply, destined to be run off a CompactFlash card with EWF installed. It's got 320mb RAM (funny, it's got CPU speed = RAM) and running a super-stripped WinXP Pro install created with nLite.

Problem is, I try to play anything, be it an MP3 or FLAC, and it crashes with a crash dump. The same dump every time.

CODE
Illegal operation:
Code: C06D007Eh, flags: 00000000h, address: 7C812AEBh
Call path:
directsound update thread
Code bytes (7C812AEBh):
7C812AABh: 8B 45 0C 56 8B 75 14 83 E0 01 85 F6 89 45 B4 C7
7C812ABBh: 45 BC 99 2A 81 7C 0F 84 99 00 00 00 8B 4D 10 83
7C812ACBh: F9 0F 0F 87 1D 1F 03 00 85 C9 89 4D C0 74 07 57
7C812ADBh: 8D 7D C4 F3 A5 5F 8D 45 B0 50 FF 15 10 15 80 7C
7C812AEBh: 5E C9 C2 10 00 85 FF 0F 8E 36 93 FF FF 8B 55 FC
7C812AFBh: 89 55 0C 0F B7 16 8B 7D F8 8A 14 3A 88 11 8B 78
7C812B0Bh: 0C 0F B6 D2 66 8B 14 57 66 3B 16 0F 85 88 8B 03
7C812B1Bh: 00 8B 50 08 66 8B 5A 04 38 19 0F 84 86 8B 03 00
Stack (01CCFD8Ch):
01CCFD6Ch: 00650076 00000072 F6AE9990 804E5AE0
01CCFD7Ch: F6AE9D64 F6AE9A4C F6AE9D64 F6AE99B0
01CCFD8Ch: 004E962C C06D007E 00000000 00000000
01CCFD9Ch: 7C812AEB 00000001 01CCFE04 7C80E13F
01CCFDACh: 01CCFF40 7C839AC0 7C80E0E8 FFFFFFFF
01CCFDBCh: 7C801BFA 7C801D72 7FFD6C00 00000000
01CCFDCCh: 00000000 01CCFDEC 7C801DA8 004BEA70
01CCFDDCh: 00000000 01CCFE48 00499983 C06D007E
01CCFDECh: 00000000 00000001 01CCFE54 003CB3EC
01CCFDFCh: 003CB344 003CB338 00000024 004E962C
01CCFE0Ch: 004F0134 004BEA70 00000000 00000001
01CCFE1Ch: 00000000 00000000 0000007E 0000027F
01CCFE2Ch: 0000027F 004F0180 003CB338 00000020
01CCFE3Ch: 004E96F4 003CB3EC 00000000 01CCFF28
01CCFE4Ch: 0049978B 00000004 01CCFE04 00000000
01CCFE5Ch: 004C6D08 0046B934 00000000 003CB344
01CCFE6Ch: 00000000 004EEFE8 004EEFF0 F8286E58
01CCFE7Ch: 00000000 00000000 00000000 81B59118
01CCFE8Ch: 81B5937C 01000011 F6AE9B98 33333333
01CCFE9Ch: 3FF33333 804E5358 00020001 0000AC44
Registers:
EAX: 01CCFD90, EBX: 00000000, ECX: 00000000, EDX: 00000000
ESI: 01CCFE58, EDI: 00000000, EBP: 01CCFDE0, ESP: 01CCFD8C
Crash location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "RaiseException" (+00000052h)

Loaded modules:
foobar2000 loaded at 00400000h - 00522000h
ntdll loaded at 7C900000h - 7C9AF000h
kernel32 loaded at 7C800000h - 7C8F6000h
COMCTL32 loaded at 773D0000h - 774D3000h
msvcrt loaded at 77C10000h - 77C68000h
ADVAPI32 loaded at 77DD0000h - 77E6B000h
RPCRT4 loaded at 77E70000h - 77F02000h
Secur32 loaded at 77FE0000h - 77FF1000h
GDI32 loaded at 77F10000h - 77F59000h
USER32 loaded at 7E410000h - 7E4A1000h
SHLWAPI loaded at 77F60000h - 77FD6000h
SHELL32 loaded at 7C9C0000h - 7D1D7000h
ole32 loaded at 774E0000h - 7761D000h
shared loaded at 10000000h - 1002A000h
COMDLG32 loaded at 763B0000h - 763F9000h
UnlockerHook loaded at 003D0000h - 003D4000h
VNCHooks loaded at 003E0000h - 003F5000h
foo_input_std loaded at 00A30000h - 00B58000h
foo_ui_std loaded at 00B80000h - 00C53000h
gdiplus loaded at 4EC50000h - 4EDF6000h
UxTheme loaded at 5AD70000h - 5ADA8000h
MSIMG32 loaded at 76380000h - 76385000h
foo_albumlist loaded at 00C90000h - 00CF5000h
foo_cdda loaded at 00D20000h - 00D58000h
foo_converter loaded at 00D80000h - 00DE7000h
foo_dsp_std loaded at 00E10000h - 00E56000h
foo_rgscan loaded at 00E80000h - 00EDA000h
xpsp2res loaded at 012F0000h - 015B5000h
imagehlp loaded at 76C90000h - 76CB8000h
DBGHELP loaded at 59A60000h - 59B01000h
VERSION loaded at 77C00000h - 77C08000h

Stack dump analysis:
Address: 004E962Ch, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 7C812AEBh, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "RaiseException" (+00000052h)
Address: 7C80E13Fh, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "DuplicateHandle" (+000002B1h)
Address: 7C839AC0h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C80E0E8h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "DuplicateHandle" (+0000025Ah)
Address: 7C801BFAh, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "LoadLibraryExW" (+00000105h)
Address: 7C801D72h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "LoadLibraryExA" (+0000001Fh)
Address: 7C801DA8h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "LoadLibraryA" (+0000002Dh)
Address: 004BEA70h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 00499983h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004E962Ch, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004F0134h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004BEA70h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0049978Bh, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0046B934h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFF0h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0046B6ACh, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFF0h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004B2F7Fh, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0046B3EAh, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 10002638h, location: "shared", loaded at 10000000h - 1002A000h
Symbol: "uPrintCrashInfo_SetDumpPath" (+000000C8h)
Address: 004EF018h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004D1AE4h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0046B387h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004B2F91h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 0046B275h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004B2FA4h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 7C80B713h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "GetModuleFileNameA" (+000001B4h)
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 7C839AC0h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C80B720h, location: "kernel32", loaded at 7C800000h - 7C8F6000h
Symbol: "GetModuleFileNameA" (+000001C1h)
Address: 0046B24Fh, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 004EEFE8h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C154F0h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C337C0h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C33CF0h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 7C9133DFh, location: "ntdll", loaded at 7C900000h - 7C9AF000h
Symbol: "RtlEncodePointer" (+00000000h)
Address: 7C913405h, location: "ntdll", loaded at 7C900000h - 7C9AF000h
Symbol: "RtlDecodePointer" (+00000000h)
Address: 004400D4h, location: "foobar2000", loaded at 00400000h - 00522000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00C1FA90h, location: "foo_ui_std", loaded at 00B80000h - 00C53000h
Address: 00B50063h, location: "foo_input_std", loaded at 00A30000h - 00B58000h

Version info:
foobar2000 v0.9.5.2
UNICODE
Windows 5.1


Additional info:
Standard DSP Array 1.0 (foo_dsp_std)
CD Audio Decoder 2.1.2 (foo_cdda)
Default User Interface 0.9.5 (foo_ui_std)
Album List 4.2 (foo_albumlist)
Standard Input Array 1.0 (foo_input_std)
foobar2000 core 0.9.5.2 (Core)
ReplayGain Scanner 2.0.5 (foo_rgscan)
Converter 1.1.1 (foo_converter)

Now, what I'm guessing here is that it's trying to execute an instruction that my old (PII-class) CPU doesn't support - which is anything other than MMX (according to CPU-Z). That's the only time I've seen "illegal operation" errors in a Win2K-based system (2K/XP/*cough*Vista).

It does the same thing even with the sound card disabled in Device Manager. Other programs are able to play sound OK. Part of my nLite stripping was DirectX (and hence DirectSound).

I imagine there's no way to get around this other than to get an older version and try it out, but as I've read before, *Oh my god* I can't talk about old versions here (even if they solve a show-stopping problem like this, ugh), so I'm not asking where to find it.

I just want to ask if there's a solution to this *other* than the unspeakable... and I don't mean get a better CPU. smile.gif

Thanks!

Big fat edit...
Strange... FB2K doesn't seem to use Wave Mapper anymore. What happened to that? Turns out, behind my back (and totally not even checking for the lack of support), DirectSound is no longer an optional output plugin - it's REQUIRED! I noticed in that crash dump that it mentioned "directsound update thread", and figured something was wrong there. Simply copying dsound.dll from my desktop to System32 fixed the problem and now I'm bumping epic bass from that crappy little PC with only 50% CPU usage. Sweet.
foosion
foobar2000 has defaulted to DirectSound output since version 0.9, and has abandoned support for waveOut at the same time. DirectSound is the preferred way of doing sound output on Windows 2000 and later, and earlier versions of Windows are no longer supported since foobar2000 0.9. If you remove a component that ships with the operating system and is not removable through the official installer, well, then you obviously do that at your own risk.
FalconFour
I know that. However, most programs don't intentionally defeat Windows' built-in DLL checking mechanism, causing undue headaches for advanced users that create customized versions of Windows.
Peter
Dsound.dll is delay-loaded (MSVC's /DELAYLOAD feature) to improve app startup speed, that's why you get a crash instead of a startup message about a missing DLL.
I don't remember anybody else ever complaining about this before, I think you really get what you ask for by removing DirectSound DLLs from your system.
FalconFour
It must be asked though: why would you delay-load a DLL that's essential for the program to operate properly, in the name of startup time?

The entire computer industry - even Foobar2000 itself - was built around making computers do new and unique things. Without stripping the crap out of Windows, for example, this little 333MHz Celeron (or whatever crappy CPU I put in that Slot-1 i440BX motherboard) would have no purpose in life. So to try and tell me that I shouldn't even be trying to customize my Windows - something I do to every copy of Windows I install on every computer I refurbish/rebuild/sell, just because it's not supported by Micro$oft, is a huge slap in the face to sanity.

While I really love the program, and appreciate the hard work of the developers, I have to disagree with the thought that nobody should ever tweak their computers. I just think that FB2K should check for the existence of possibly non-essential components (i.e. components that may not be present in, say, Windows XP Embedded, which IS a fully componentized version of XP Pro, supported by Microsoft) before jumping to any conclusions and crashing without so much as a clue as to the problem. The term "directsound" was a vague hint at best, and thanks to it I was able to figure out the problem - however, it would be nice if it simply up and told me like most other Windows programs do in lack of DirectX (like VMWare lacking OpenGL, DirectInput, etc - easily pieced back together from the error messages it presents).

After all, there are those of us in the world that take our OSes like we take our women. Stripped. wink.gif
musicmusic
If you remove arbitrary parts of the operating system, you can't expect things to work. If you can't remove them by supported methods, then what you have is no longer "Windows XP", and doesn't meet the minimum requirements. Indeed, the requirement to have DirectSound installed can be inferred by the Windows XP/Vista requirement - it's part of the operating system. If you have some problem with Microsoft (not Micro$oft) then maybe you should be using a different operating system.
Yirkha
QUOTE(FalconFour @ May 14 2008, 10:05) *
While I really love the program, and appreciate the hard work of the developers, I have to disagree with the thought that nobody should ever tweak their computers.
You are wrong, nobody said you can't tweak your computer. It's rather "if you are l33t enough to mess with the operating system, you are expected to be l33t enough to resolve the issues as well".
FalconFour
QUOTE(musicmusic @ May 14 2008, 01:22) *

If you remove arbitrary parts of the operating system, you can't expect things to work. If you can't remove them by supported methods, then what you have is no longer "Windows XP", and doesn't meet the minimum requirements. Indeed, the requirement to have DirectSound installed can be inferred by the Windows XP/Vista requirement - it's part of the operating system. If you have some problem with Microsoft (not Micro$oft) then maybe you should be using a different operating system.

Actually, my using nLite to remove components is simply an easier way of building what XPe Target Designer would have done if I had neglected to include DirectSound support. Difference is, XPe is supported by MS, I just don't feel like going through that kind of trouble. And yeah, I already knew DirectX would be a risky thing to remove, but I would have expected it to at least give me Wave support... or at least an error! A crash dump kinda caught me off guard.

Fact of the matter is, the program should simply crash more elegantly when it encounters a problem with a system component. The crash dump should have had more useful information in it - instead of a useless (for me, the end user at least, and even a small bit of a programmer) string of numbers. Couldn't it have told me it was trying to load dsound.dll and simply couldn't find it? I mean, that wasn't so hard, was it?

Doesn't even need to be an exception or a line of code "just for that FalconFour asshole". It could just be something that more elegantly catches missing or corrupt files, or DLLs that fail to load properly. I'd've thought that, overriding Windows' default behavior in the name of "loading speed", a similar facility would be in place to catch failures, other than a critical meltdown and a CPU register dump.

Am I making sense to anyone? If not, I'll just go back to enjoying FB2K and chalking this up as "remember that FB2K needs DirectSound". tongue.gif

edit: I use Windows because Linux is for quitters. =)
musicmusic
QUOTE(FalconFour @ May 14 2008, 09:40) *
Difference is, XPe is supported by MS, I just don't feel like going through that kind of trouble.
I don't know anything about XPe. But some quick research indicates its license prohibits you from installing it on standard PCs.

QUOTE(FalconFour @ May 14 2008, 09:40) *
Fact of the matter is, the program should simply crash more elegantly when it encounters a problem with a system component. The crash dump should have had more useful information in it - instead of a useless (for me, the end user at least, and even a small bit of a programmer) string of numbers. Couldn't it have told me it was trying to load dsound.dll and simply couldn't find it? I mean, that wasn't so hard, was it?
Ideally, yes it should have nice user-friendly and informative errors. But ideal is not always possible, and spending time achieving that on things that can be reasonably expected not to happen is not always a high priority.
FalconFour
Well, considering as though it only runs on things that could be ideally distorted to being "standard PCs" (if you consider a computer in a car a standard PC, which is probably one of the more common uses of XPe)... I don't know where that can be "prohibited"... besides, even if that were the case, a computer that runs from a SanDisk 1gb CompactFlash card, with no monitor or mouse, acting as a remote speaker/print server, is hardly a Standard PC smile.gif
(Despite what Device Manager says about my PC description...)

Oh, and, while I'm in a group full of developers, there's one question on my mind that doesn't deserve its own topic: with being such a useful feature, how come all sorts of not-so-helpful keys are mapped by default, but not standard multimedia keyboard keys to their appropriate functions? FB2K has functions for play/stop/previous/next, so... wouldn't it make sense to map those by default at least in the focused context? It's not (well, typically) a trouble to map them, but it would help people that aren't so Preferences-inclined wink.gif
foosion
The multimedia keys work (globally) by default without needing to be mapped in the keyboard shortcuts preferences. Ideally at least. If you have some driver or software that messes with multimedia key events, you may need to configure those keyboard bindings manually.
FalconFour
Hm, I didn't know that... I've never had them work out of the box with any standard multimedia keyboard (and no drivers). I always have to set up things like "playback/play or pause" -> "Play/Pause (MM)" (global), in order for MM keys to work.

Maybe I can help troubleshoot that? Hey, I'm trying to be useful :-)

(edit: BTW, I absolutely, totally, completely, and 100%ably LOVE the new user interface style. It's everything I could ask for in a kickass media player UI. You guys effing rule. I was just reminded of that while installing it on my, uh, router/proxy/torrentbox/newly commissioned alarm clock box...)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.