[Bug 779] New - wine regression in Leap Ahead Preschool

wine-bugs at winehq.com wine-bugs at winehq.com
Sun Jun 9 18:18:07 CDT 2002


http://bugs.winehq.com/show_bug.cgi?id=779

*** shadow/779	Sun Jun  9 18:18:07 2002
--- shadow/779.tmp.1767	Sun Jun  9 18:18:07 2002
***************
*** 0 ****
--- 1,181 ----
+ +============================================================================+
+ | wine regression in Leap Ahead Preschool                                    |
+ +----------------------------------------------------------------------------+
+ |        Bug #: 779                         Product: Wine                    |
+ |       Status: UNCONFIRMED                 Version: CVS                     |
+ |   Resolution:                            Platform:                         |
+ |     Severity: normal                   OS/Version: All                     |
+ |     Priority: P1                        Component: wine-multimedia         |
+ +----------------------------------------------------------------------------+
+ |  Assigned To: wine-bugs at winehq.com                                         |
+ |  Reported By: tony_lambregts at telusplanet.net                               |
+ |      CC list: Cc:                                                          |
+ +----------------------------------------------------------------------------+
+ |    Milestone: TargetMilestone: ---                                         |
+ |          URL:                                                              |
+ +============================================================================+
+ |                              DESCRIPTION                                   |
+ For several months now my kids have been able to enjoy most of their games on
+ linux using Wine. Leap Ahead Preschool was working 99.99% perfectly up untill
+ recently. I did some regression testing using CVS and have traced it down to
+ this patch http://cvs.winehq.com/patch.py?id=1022632260199058901592256 With this
+ patch  applied Leap Ahead Preschool crashes on startup and brings up the
+ debugger with the following error.
+ 
+ Unhandled exception: page fault on write access to 0x00000010 in 32-bit code
+ (0x4099cd4c). In 32-bit mode.                                                  
+                           
+ 0x4099cd4c (MULTIMEDIA_PlaySound+0xdc [mmsystem.c:637] in winmm.dll.so): movl  
+ %eax,0x10(%edx)639         LeaveCriticalSection(&iData->cs);                   
+                            
+ 
+ The following is the code that that is executed  when the error occurs
+ 
+ static BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD
+ fdwSound, BOOL bUnicode)
+ {
+     WINE_PLAYSOUND*     wps = NULL;
+     LPWINE_MM_IDATA	iData = MULTIMEDIA_GetIData();
+ 
+     TRACE("pszSound='%p' hmod=%04X fdwSound=%08lX\n",
+ 	  pszSound, hmod, fdwSound);
+     
+     /* FIXME? I see no difference between SND_NOWAIT and SND_NOSTOP !
+      * there could be one if several sounds can be played at once...
+      */ 
+     if ((fdwSound & (SND_NOWAIT | SND_NOSTOP)) && iData->lpPlaySound != NULL) 
+ 	return FALSE;
+ 
+     /* alloc internal structure, if we need to play something */
+     if (pszSound && !(fdwSound & SND_PURGE))
+     {
+         if (!(wps = PlaySound_Alloc(pszSound, hmod, fdwSound, bUnicode)))
+             return FALSE;
+     }
+     
+     EnterCriticalSection(&iData->cs);
+     /* since several threads can enter PlaySound in parallel, we're not
+      * sure, at this point, that another thread didn't start a new playsound
+      */
+     while (iData->lpPlaySound != NULL)
+     {
+         ResetEvent(iData->psLastEvent);
+         /* FIXME: doc says we have to stop all instances of pszSound if it's non
+          * NULL... as of today, we stop all playing instances */
+         SetEvent(iData->psStopEvent);
+ 
+         LeaveCriticalSection(&iData->cs);
+         WaitForSingleObject(iData->psLastEvent, INFINITE);
+         EnterCriticalSection(&iData->cs);
+ 
+         ResetEvent(iData->psStopEvent);
+     }
+ 
+     wps->lpNext = iData->lpPlaySound;
+ *** ^^^^^^^ this is line 637 ^^^^^^^ ***
+ 
+     iData->lpPlaySound = wps;
+     LeaveCriticalSection(&iData->cs);
+ 
+     if (!pszSound || (fdwSound & SND_PURGE)) return TRUE;
+ 
+     if (fdwSound & SND_ASYNC) 
+     {
+         DWORD       id;
+         wps->bLoop = (fdwSound & SND_LOOP) ? TRUE : FALSE;
+         if (CreateThread(NULL, 0, proc_PlaySound, wps, 0, &id) != 0)
+             return TRUE;
+     }
+     else return proc_PlaySound(wps);
+ 
+     /* error cases */
+     PlaySound_Free(wps);
+     return FALSE;
+ }
+ 
+ The following is the backtrace
+ Backtrace:                                                                     
+                                                     
+ =>0 0x4099cd4c (MULTIMEDIA_PlaySound+0xdc(pszSound=0x0, hmod=0x0, fdwSound=0x0,
+ bUnicode=0x0) [mmsystem.c:637] in winmm.dll.so) (ebp=405a5db0)                 
+                                                                                
+                         
+ 1 0x4099ce5a (sndPlaySoundA+0x16(pszSoundA=0x0, uFlags=0x0) [mmsystem.c:695] in
+ winmm.dll.so) (ebp=405a5dc8)                      
+ 2 0x004090a6 (setup32.exe..text+0x80a6 in D:\install\setup32.exe) (ebp=405a5e0c)
+                                                  
+ 3 0x0041a84f (setup32.exe.EntryPoint+0xd14f in D:\install\setup32.exe)
+ (ebp=405a5eb0)                                   
+ 4 0x0041a3ba (setup32.exe.EntryPoint+0xccba in D:\install\setup32.exe)
+ (ebp=405a5ed4)                                   
+ 5 0x0041917c (setup32.exe.EntryPoint+0xba7c in D:\install\setup32.exe)
+ (ebp=405a5f40)                                   
+ 6 0x00419481 (setup32.exe.EntryPoint+0xbd81 in D:\install\setup32.exe)
+ (ebp=405a5f5c)                                   
+ 7 0x406b8dbf (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=405a5f80)            
+                                         
+ 8 0x406b8e4a (WINPROC_CallWndProc+0x82(proc=0x419455, hwnd=0x10021, msg=0x7,
+ wParam=0x0, lParam=0x0) [winproc.c:183] in .so) (ebp=405a5fb0)                 
+                                                                                
+      
+ 9 0x406bf136 (CallWindowProcA+0x4a(func=0x419455, hwnd=0x10021, msg=0x7,
+ wParam=0x0, lParam=0x0) [winproc.c:2779] in use) (ebp=405a5fe4)                
+                                                                                
+          
+ 10 0x406cdd32 (call_window_proc+0xf2(hwnd=0x10021, msg=0x7, wparam=0x0,
+ lparam=0x0, unicode=0x0) [message.c:1372] in use) (ebp=405a6040)               
+                                                                                
+           
+ 11 0x406ce9e3 (SendMessageTimeoutA+0xdf(hwnd=0x10021, msg=0x7, wparam=0x0,
+ lparam=0x0, flags=0x0, timeout=0xffffffff, re5a60c4) [message.c:1784] in
+ user32.dll.so) (ebp=405a60a0)                                                  
+               
+ 12 0x406ceb4b (SendMessageA+0x37(hwnd=0x10021, msg=0x7, wparam=0x0, lparam=0x0)
+ [message.c:1829] in user32.dll.so) (ebp=
+ 13 0x40698ca5 (FOCUS_SwitchFocus+0x65(pMsgQ=0x40385738, hFocusFrom=0x0,
+ hFocusTo=0x10021) [focus.c:58] in user32.dll.so) 60f8)                         
+                                                                                
+           
+ 14 0x406b848e (WINPOS_SetActiveWindow+0x496(hWnd=0x10021, fMouse=0x0,
+ fChangeFocus=0x1) [winpos.c:1370] in user32.dll.so a614c)                      
+                                                                                
+              
+ 15 0x406b74b6 (SetActiveWindow+0xd2(hwnd=0x10021) [winpos.c:723] in
+ user32.dll.so) (ebp=405a617c)                       
+ 16 0x40a40a66 (X11DRV_SetWindowPos+0x54e(winpos=0x405a6200) [winpos.c:978] in
+ x11drv.dll.so) (ebp=405a61f4)             
+ 17 0x406b8815 (SetWindowPos+0x59(hwnd=0x10021, hwndInsertAfter=0x0, x=0x0,
+ y=0x0, cx=0x0, cy=0x0, flags=0x43) [winpos.c:user32.dll.so) (ebp=405a622c)     
+                                                                                
+         
+ 18 0x40a410d9 (X11DRV_ShowWindow+0x1ad(hwnd=0x10021, cmd=0x5) [winpos.c:1242] in
+ x11drv.dll.so) (ebp=405a6274)          
+ 19 0x406b7b67 (ShowWindow+0x33(hwnd=0x10021, cmd=0x5) [winpos.c:1007] in
+ user32.dll.so) (ebp=405a6290)                  
+ 20 0x0040595a (setup32.exe..text+0x495a in D:\install\setup32.exe)
+ (ebp=405a6310)                                       
+ 21 0x00405099 (setup32.exe..text+0x4099 in D:\install\setup32.exe)
+ (ebp=405a6b78)                                       
+ 22 0x00405186 (setup32.exe..text+0x4186 in D:\install\setup32.exe)
+ (ebp=405a6c24)                                       
+ 23 0x0041a3ba (setup32.exe.EntryPoint+0xccba in D:\install\setup32.exe)
+ (ebp=405a6c48)                                  
+ 24 0x0041917c (setup32.exe.EntryPoint+0xba7c in D:\install\setup32.exe)
+ (ebp=405a6cb4)                                  
+ 25 0x00419481 (setup32.exe.EntryPoint+0xbd81 in D:\install\setup32.exe)
+ (ebp=405a6cd0)                                  
+ 26 0x406b8dbf (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=405a6cf4)           
+                                         
+ 27 0x406b8e4a (WINPROC_CallWndProc+0x82(proc=0x419455, hwnd=0x10021,msg=0x113,
+ wParam=0x1, lParam=0x0) [winproc.c:183] dll.so) (ebp=405a6d24)                 
+                                                                                   
+ 28 0x406bf197 (CallWindowProcA+0xab(func=0x40b906c4, hwnd=0x10021, msg=0x113,
+ wParam=0x1, lParam=0x0) [winproc.c:2795] ill.so) (ebp=405a6d58)                
+                                                                                     
+ 29 0x406a16e2 (DispatchMessageA+0x11e(msg=0x42df60) [message.c:1051] in
+ user32.dll.so) (ebp=405a6d9c)                   
+ 30 0x0041d061 (setup32.exe.EntryPoint+0xf961 in D:\install\setup32.exe)
+ (ebp=00000000)                                  ?
+ 
+ I think I got the back trace right but cut and paste from the console does not
+ work the way I expected.
\ No newline at end of file



More information about the wine-bugs mailing list