https://bugs.winehq.org/show_bug.cgi?id=5903
Michael Müller michael@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |michael@fds-team.de
--- Comment #20 from Michael Müller michael@fds-team.de --- The crash is not really a Wine bug. During the speed test the installer opens a file on the drive and measures the time needed to read some data from it (only the 16 bit calls are shown):
0029:Call MMSYSTEM.1210: MMIOOPEN(12b77c5c "D:\HD\AQUADCT.WAV",0000:0000,00000000) ret=1277:e107 ds=12b7 0029:Ret MMSYSTEM.1210: MMIOOPEN() retval=0000002e ret=1277:e107 ds=12b7 0029:Call MMSYSTEM.1214: MMIOSEEK(002e,00000000,0002) ret=1277:e192 ds=12b7 0029:Ret MMSYSTEM.1214: MMIOSEEK() retval=00004dc2 ret=1277:e192 ds=12b7 0029:Call MMSYSTEM.1214: MMIOSEEK(002e,00000000,0000) ret=1277:e1a6 ds=12b7 0029:Ret MMSYSTEM.1214: MMIOSEEK() retval=00000000 ret=1277:e1a6 ds=12b7 0029:Call MMSYSTEM.607: TIMEGETTIME() ret=1277:e218 ds=12b7 0029:Ret MMSYSTEM.607: TIMEGETTIME() retval=02ce0beb ret=1277:e218 ds=12b7 0029:Call MMSYSTEM.1212: MMIOREAD(002e,13cf:0000,00004dc2) ret=1277:e232 ds=12b7 0029:Ret MMSYSTEM.1212: MMIOREAD() retval=00004dc2 ret=1277:e232 ds=12b7 0029:Call MMSYSTEM.607: TIMEGETTIME() ret=1277:e23d ds=12b7 0029:Ret MMSYSTEM.607: TIMEGETTIME() retval=02ce0beb ret=1277:e23d ds=12b7 0029:Call KERNEL32.UnhandledExceptionFilter(0070a3a4) ret=7bca9005 wine: Unhandled division by zero at address 0x1277:0x00004f90 (thread 0029), starting debugger...
In my case the time needed to read the data was lower than the resolution of TIMEGETTIME (both calls return 02ce0beb as time), so we have a time difference of zero. The application doesn't seem to be prepared for this and uses the value as denominator in a division, leading to the division by zero exception. If you hack TIMEGETTIME to return at least an offset of 1 compared to the previous call, the crash is gone and my drive passes the test.
I don't think we can fix anything here as this is basically an application bug. Dropping the filesystem cache just before running the drive test could be a feasible workaround to slow down the read (when using a real CD drive).