http://bugs.winehq.org/show_bug.cgi?id=17181
Summary: Winbench 96 disk test fails during recursive directory deletion; bug in INT21_FindFirst/FindNext? Product: Wine Version: 1.1.13 Platform: Other OS/Version: other Status: NEW Severity: normal Priority: P2 Component: dos AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
Install and run Ziff-Davis PC Benchmarks WinBench 96 (on the Winstone 32 cd-rom). Start it with cd .wine/drive_c/ZDBENCH/WB96 wine WB96 Get past the hangs described in bug 12267 by killing and restarting twice.
Run the "Disk Tests". Get past the abort
"A DOS file operation that was supposed to fail succeeded during the test. The following information is for ZDBOp use: Drive: C Operation: GetFileAttrib Script Location: 0d0b11 0 Pathname(s): C:~WBDM.TMP\ZDBENCH\WS96.B03\WORK\PDOX50"
by applying the patch http://www.winehq.org/pipermail/wine-patches/2009-January/068579.html
The test runs for a long time, then tries to delete its temporary directory, C:~WBDM.TMP, but fails with the dialog and the app aborts with
"A DOS file operation failed during the test. The following information is for ZDBOp use: Drive: C Operation: DeleteTestDir Pathname(s): SB, ??????????? Working Dir: ~WBDM.TMP Int 21 Function: 3a 00 CF: 1 Expected CF: 0"
Looking at the log, it seems as if Wine trips over its shoelaces when the app is doing its recursive directory list, and does not tell the app about one directory, C:~WBDM.TMP\MGA\CPANEL. As a result, the app doesn't delete its contents, and when the app then tries to delete C:~WBDM.TMP\MGA, it fails with 'directory not empty'.
INT21_FindHelper looks awfully tricky. It seems to have a loop to skip over some directory entries, and maybe this is firing improperly here. The code seems to date from 2003-11-14, mostly written by Eric Pouech in http://source.winehq.org/git/wine.git/?a=commit;h=8ca6cadab1ebb386f1dfa2e47c... and touched up by Alexandre same day in http://source.winehq.org/git/wine.git/?a=commit;h=adfa5e101fc2e01d4276c3f3ee...