http://bugs.winehq.org/show_bug.cgi?id=28712
Bug #: 28712 Summary: winhttp/notification.ok: invalid read in check_notification Product: Wine Version: 1.1.34 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: winhttp AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
First reported http://www.winehq.org/pipermail/wine-devel/2009-November/079718.html but still happening today.
Here's the valgrind error I'm seeing now (with -O1):
Invalid read of size 4 at check_notification (notification.c:85) by send_callback (session.c:57) by release_object (handle.c:81) by connect_destroy (session.c:261) by release_object (handle.c:85) by request_destroy (session.c:534) by release_object (handle.c:85) by task_thread (request.c:185) by worker_thread_proc (threadpool.c:114) by ??? (in dlls/ntdll/ntdll.dll.so) by call_thread_entry_point (signal_i386.c:2499) by start_thread (thread.c:405) by start_thread (pthread_create.c:304) by clone (clone.S:130) Address 0x7f22f854 is not stack'd, malloc'd or (recently) free'd
http://bugs.winehq.org/show_bug.cgi?id=28712
--- Comment #1 from Hans Leidekker hans@meelstraat.net 2011-10-14 02:53:49 CDT --- Does this occur in test_async? Can you please run with WINEDEBUG=+winhttp and attach the trace? Valgrind produces a "Fatal error at startup" here.
http://bugs.winehq.org/show_bug.cgi?id=28712
--- Comment #2 from Dan Kegel dank@kegel.com 2011-10-14 08:30:22 CDT --- Looks like it's because the Sleep(2000) is insufficient when running under valgrind. If I comment out the part before the sleep, the error goes away. If I comment out the part after the sleep, the error goes away. If I change it to Sleep(20000), the error goes away.
Is there a more reliable way to wait for the entry to be evicted from the cache?
This isn't quite a valgrind-only issue; the same race condition could happen on a system that is slow or busy for other reasons.
http://bugs.winehq.org/show_bug.cgi?id=28712
--- Comment #3 from Hans Leidekker hans@meelstraat.net 2011-10-14 09:09:37 CDT --- (In reply to comment #2)
Looks like it's because the Sleep(2000) is insufficient when running under valgrind. If I comment out the part before the sleep, the error goes away. If I comment out the part after the sleep, the error goes away. If I change it to Sleep(20000), the error goes away.
Is there a more reliable way to wait for the entry to be evicted from the cache?
I believe this is what Microsoft calls "keep-alive pooling of anonymous connections across sessions". I remember looking for an option or registry tweak to disable it but I came up empty.
Unloading winhttp between tests would work around the problem I guess, but it's a bit heavy-handed. Using a different host for each test or using authenticated connections to a single host should also work around it.
https://bugs.winehq.org/show_bug.cgi?id=28712
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #4 from Austin English austinenglish@gmail.com --- No invalid reads in that test now, only a couple leaks.
https://bugs.winehq.org/show_bug.cgi?id=28712
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.18.