Hi, for those of readers who don't know yet, i'm a "Hello word" programmer, so sorry for bad wording or speculation etc.
I decided to look into a regression since wine 1.1.30, who nobody apparently not know what to do, otherwise it would be solved ;)
The game freezes during sound initialization and i tracked it down by printf debugging to heap allocation in DirectSoundDevice_Create(). Game goes:
... DirectSoundDevice_Create() //HeapAlloc OK ... OpenAL Init ... DirectSoundDevice_Create() //HeapAlloc returns insane values ... fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5e70000 fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5a60000 fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5a40000 fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5950000 fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5940000 fixme:dbghelp:validate_addr64 Unsupported address ffffffffb5920000 Frozen
This happens only when builtin OpenAL is used. In this case HeapAlloc gives values always beginning with 0x234vwxyz.
Builtin OpenAL example (*** BAD - Game freezes ***): device = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(DirectSoundDevice));
First call of DirectSoundDevice_Create(): 0x0014f908 = HeapAlloc(0x00110000, 0x00000008, 0x000003d4)
Second call of DirectSoundDevice_Create(): 0x234228e0 = HeapAlloc(0x00110000, 0x00000008, 0x000003d4)
Native OpenAL example(*** OK - Game runs***):
First call of DirectSoundDevice_Create(): 0x0014fa30 = HeapAlloc(0x00110000, 0x00000008, 0x000003d4)
Second call of DirectSoundDevice_Create(): 0x001566c0 = HeapAlloc(0x00110000, 0x00000008, 0x000003d4)
So how do i find out, why HeapAlloc does not return sane values like in first call of DirectSoundDevice_Create()?