http://bugs.winehq.org/show_bug.cgi?id=28038
Summary: wininet/tests/urlcache: CommitUrlCacheEntry fails sometimes Product: Wine Version: 1.3.26 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
See at http://test.winehq.org/data/8c00ee0beff1a9a6be08f32d821186c798d15b9d/linux_r... and also locally. Here's a log, with backtrace:
../../../tools/runtest -q -P wine -M wininet.dll -T ../../.. -p wininet_test.exe.so urlcache.c fixme:wininet:CommitUrlCacheEntryInternal entry already in cache - don't know what to do! fixme:wininet:URLCache_FindFirstFreeEntry Grow file err:wininet:CommitUrlCacheEntryInternal no free entries urlcache.c:418: Test failed: CommitUrlCacheEntry failed with error 112 urlcache.c:424: Test failed: RetrieveUrlCacheEntryFile should have set last error to ERROR_INSUFFICIENT_BUFFER instead of 2 urlcache.c:429: Test failed: RetrieveUrlCacheEntryFile failed with error 2 urlcache.c:43: Test failed: RetrieveUrlCacheEntryFile: dwStructSize was 1114360 urlcache.c:44: Test failed: RetrieveUrlCacheEntryFile: lpszSourceUrlName should be http://urlcachetest.winehq.org/index.html instead of ^X^T urlcache.c:45: Test failed: RetrieveUrlCacheEntryFile: lpszLocalFileName should be C:\users\dank\Local Settings\Temporary Internet Files\Content.IE5\2IJCR9QJ\index[0].html instead of Unhandled exception: page fault on read access to 0x00650053 in 32-bit code (0x682a1527). Backtrace: =>0 0x682a1527 in libc.so.6 (+0x111527) (0x0032fb18) 1 check_cache_entry_infoA+0x152(returnedfrom="RetrieveUrlCacheEntryFile", lpCacheEntryInfo=0x131400) [dlls/wininet/tests/urlcache.c:46] 2 test_urlcacheA+0xacd() [dlls/wininet/tests/urlcache.c:431] 3 func_urlcache+0xa8() [dlls/wininet/tests/urlcache.c:782] 4 run_test+0x9e(name="urlcache.c") [include/wine/test.h:556] 0x682a1527: repe movq 0x0(%edx),%mm2
http://bugs.winehq.org/show_bug.cgi?id=28038
Sylvain Petreolle spetreolle@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |spetreolle@yahoo.fr
http://bugs.winehq.org/show_bug.cgi?id=28038
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|wininet/tests/urlcache: |wininet/tests/urlcache: |CommitUrlCacheEntry fails |CommitUrlCacheEntry fails |sometimes |sometimes, crashes | |sometimes
--- Comment #1 from Dan Kegel dank@kegel.com 2011-09-08 10:01:51 CDT --- I ran the test overnight in a loop on a 64 bit system.
The first 36 runs were fine. The 37th run failed, but without a crash:
../../../tools/runtest -q -P wine -M wininet.dll -T ../../.. -p wininet_test.exe.so urlcache.c && touch urlcache.ok fixme:wininet:CommitUrlCacheEntryInternal entry already in cache - don't know what to do! fixme:wininet:GetUrlCacheEntryInfoExA Undocumented flag(s): 200 err:wininet:GetUrlCacheEntryInfoExA Reserved value was not 0 err:wininet:GetUrlCacheEntryInfoExA Reserved value was not 0 fixme:wininet:IsUrlCacheEntryExpiredA unknown flags 0xffffffff fixme:wininet:CommitUrlCacheEntryInternal entry already in cache - don't know what to do! fixme:wininet:URLCache_FindFirstFreeEntry Grow file err:wininet:CommitUrlCacheEntryInternal no free entries urlcache.c:598: Test failed: CommitUrlCacheEntry failed with error 112 urlcache.c:608: Test failed: DeleteUrlCacheEntryA failed with error 2 fixme:wininet:URLCache_FindFirstFreeEntry Grow file err:wininet:CommitUrlCacheEntryInternal no free entries urlcache.c:646: Test failed: CommitUrlCacheEntry failed with error 112 urlcache.c:651: Test failed: expected ERROR_INSUFFICIENT_BUFFER, got 2 urlcache.c:655: Test failed: GetUrlCacheEntryInfo failed with error 2 urlcache.c:659: Test failed: expected dwExemptDelta 864000, got 7143540 urlcache.c:666: Test failed: DeleteUrlCacheEntryA failed with error 2 fixme:wininet:URLCache_FindFirstFreeEntry Grow file err:wininet:CommitUrlCacheEntryInternal no free entries urlcache.c:678: Test failed: CommitUrlCacheEntry failed with error 112 urlcache.c:683: Test failed: expected ERROR_INSUFFICIENT_BUFFER, got 2 urlcache.c:687: Test failed: GetUrlCacheEntryInfo failed with error 2 urlcache.c:691: Test failed: expected dwExemptDelta 864000, got 7143540 urlcache.c:697: Test failed: SetUrlCacheEntryInfo failed: 2 urlcache.c:699: Test failed: GetUrlCacheEntryInfo failed with error 2 urlcache.c:712: Test failed: DeleteUrlCacheEntryA failed with error 2
The next six runs all failed with the earlier crash (but the wrong dwStructSize is a different garbage value):
../../../tools/runtest -q -P wine -M wininet.dll -T ../../.. -p wininet_test.exe.so urlcache.c && touch urlcache.ok fixme:wininet:CommitUrlCacheEntryInternal entry already in cache - don't know what to do! fixme:wininet:URLCache_FindFirstFreeEntry Grow file err:wininet:CommitUrlCacheEntryInternal no free entries urlcache.c:418: Test failed: CommitUrlCacheEntry failed with error 112 urlcache.c:424: Test failed: RetrieveUrlCacheEntryFile should have set last error to ERROR_INSUFFICIENT_BUFFER instead of 2 urlcache.c:429: Test failed: RetrieveUrlCacheEntryFile failed with error 2 urlcache.c:43: Test failed: RetrieveUrlCacheEntryFile: dwStructSize was 236128 urlcache.c:44: Test failed: RetrieveUrlCacheEntryFile: lpszSourceUrlName should be http://urlcachetest.winehq.org/index.html instead of <80>É^C wine: Unhandled page fault at address 0x2b486bce2cf8 (thread 01da), starting debugger... Backtrace: =>0 0x00002b486bce2cf8 in libc.so.6 (+0x133cf8) (0x000000000022f850) 1 check_cache_entry_infoA+0xd6(returnedfrom="RetrieveUrlCacheEntryFile", lpCacheEntryInfo=0x3c950) [dlls/wininet/tests/urlcache.c:45] 2 test_urlcacheA+0xa01() [dlls/wininet/tests/urlcache.c:431] 3 func_urlcache+0x8c() [dlls/wininet/tests/urlcache.c:782] 4 run_test+0x9c(name="urlcache.c") [dlls/wininet/tests/../../../include/wine/test.h:556]
http://bugs.winehq.org/show_bug.cgi?id=28038
--- Comment #2 from Alexandre Julliard julliard@winehq.org 2011-09-08 10:26:48 CDT --- It's not random, it fails when it runs out of cache entries. You can clear the cache before running if you don't want to see it fail.
http://bugs.winehq.org/show_bug.cgi?id=28038
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|wininet/tests/urlcache: |wininet/tests/urlcache: |CommitUrlCacheEntry fails |CommitUrlCacheEntry crashes |sometimes, crashes |sometimes when cache is |sometimes |full?
--- Comment #3 from Dan Kegel dank@kegel.com 2011-09-08 10:43:10 CDT --- It should never crash, though.
http://bugs.winehq.org/show_bug.cgi?id=28038
--- Comment #4 from Juan Lang juan_lang@yahoo.com 2011-09-08 12:11:34 CDT --- (In reply to comment #3)
It should never crash, though.
Of course. The URL cache code is pretty broken, and this bug is valid.
http://bugs.winehq.org/show_bug.cgi?id=28038
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |testcase CC| |austinenglish@gmail.com Component|-unknown |wininet
http://bugs.winehq.org/show_bug.cgi?id=28038
--- Comment #5 from Morten Rønne morten.roenne@tdcadsl.dk 2012-03-28 05:41:07 CDT --- Created attachment 39574 --> http://bugs.winehq.org/attachment.cgi?id=39574 Fix calculation of start offset in hash table.
http://bugs.winehq.org/show_bug.cgi?id=28038
Morten Rønne morten.roenne@tdcadsl.dk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |morten.roenne@tdcadsl.dk
--- Comment #6 from Morten Rønne morten.roenne@tdcadsl.dk 2012-03-28 05:44:10 CDT --- There is a bug in the code which causes the code to go out of bounds on hash pages. This will either cause an overwrite of existing data, or cause a SIGSEGV if the hash page is close to the end, and the overflow goes outside of the memory mapped area.
I have added a patch for the problem if you want to test it out. It will be part of a longer serie that I am preparing for urlcache.
http://bugs.winehq.org/show_bug.cgi?id=28038
--- Comment #7 from Austin English austinenglish@gmail.com 2012-03-28 13:31:50 CDT --- (In reply to comment #6)
There is a bug in the code which causes the code to go out of bounds on hash pages. This will either cause an overwrite of existing data, or cause a SIGSEGV if the hash page is close to the end, and the overflow goes outside of the memory mapped area.
I have added a patch for the problem if you want to test it out. It will be part of a longer serie that I am preparing for urlcache.
I was still able to get a failure as in comment #1 when running in a loop after 40 seconds.
http://bugs.winehq.org/show_bug.cgi?id=28038
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adys.wh@gmail.com
--- Comment #8 from Jerome Leclanche adys.wh@gmail.com 2012-04-28 05:24:33 CDT --- (In reply to comment #6) Update on patch?
http://bugs.winehq.org/show_bug.cgi?id=28038
Piotr Caban piotr.caban@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |piotr.caban@gmail.com
--- Comment #9 from Piotr Caban piotr.caban@gmail.com 2012-09-24 08:21:37 CDT --- This should be fixed now. Please retest.
It was possible to corrupt index.dat file with older wine. Please remove it before trying to reproduce the bug.
http://bugs.winehq.org/show_bug.cgi?id=28038
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #10 from Dan Kegel dank@kegel.com 2012-09-24 09:58:24 CDT --- Survives 200 loops, thanks.
http://bugs.winehq.org/show_bug.cgi?id=28038
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2012-09-28 13:43:04 CDT --- Closing bugs fixed in 1.5.14.