http://bugs.winehq.org/show_bug.cgi?id=20204
--- Comment #3 from Jörg Höhle hoehle@users.sourceforge.net 2009-11-04 09:00:33 --- http://test.winehq.org/data/tests/ole32:clipboard.html shows that perhaps the patch helped produce a period of stability without crashes lasting for 15 days. Since then, only 64bit machines crashed, sometimes.
That is possibly independent on the present issue. Should this issue be closed or wait until test results stabilize?
Regarding ReleasStgMedium(), I must say that although I contributed the obvious patch, it would help if somebody who knows OLE could look after the cause of the randomness. I fail to understand the Release protocol. I find it illogical that the following pattern is used in tests/clipboard.c.
Either: InitFormatEtc() med.x=GlobalAlloc / CreateStream / StgCreateDocFile hr=GetDataHere(med) ReleaseStgMedium(med) /* unconditionaly because we allocated resources */ Or: InitFormatEtc() hr=GetDataHere(med) if (SUCCEEDED(hr)) ReleaseStgMedium(med) /* random crashes if not guarded */
I mean, if Release is only mandatory in the first case (to free the Alloc), why do we need it at all in the second case?
Note that on my (Linux) machine 10 consecutive invocations of clipboard.ok produce 3 different error patterns (all in test_getdatahere), sometimes no error. When it fails, getdatahere returns 80040064 (like other people's results on test.winehq).