This series:
- cleanups some code (using bitfield instead of hardcoded constants)
- silences some FIXMEs in SymGetTypeInfo
- fixes a couple of erroneous lexical relationship among dbghelp objects
(mainly attaching - as native does - some objects to SymTagExe object)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/430
On Mon Jul 11 15:14:43 2022 +0000, Jinoh Kang wrote:
> How about the following race-free approach?
> ```suggestion:-0+0
> /* wait for I/O to start, which transitions the pipe handle from
> signaled to nonsignaled state. */
> while ((wait_status = WaitForSingleObject(pipe, 0)) ==
> WAIT_OBJECT_0) Sleep(1);
> ok(wait_status == WAIT_TIMEOUT, "WaitForSingleObject returned %lu
> (error %lu)\n", wait_status, GetLastError());
> ```
> Ditto for other places.
i had copied the `Sleep(100)` from one of the sync.c tests, i think. but if it makes the test less flaky, i'll take it. thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3919
On Mon Jul 11 15:14:45 2022 +0000, Jinoh Kang wrote:
> Per Wine code style, you should omit the second space in `&io ) )`.
> ```suggestion:-0+0
> return set_ntstatus( NtCancelSynchronousIoFile( thread, NULL, &io ));
> ```
the file has a mix of styles. it does look from a skim like most are without the space, but i think i copied from CancelIo and CancelIoEx right above it, and they both have the space. never quite sure what to do in those cases, but i can remove it
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3917
> Wait, what's partial about it?
i don't handle the 2nd argument, but it doesn't seem to be used for what i need, though. i can implement the higher level kernel32 call without it
what about something like this, copied from NtUnlockFile:
`
TRACE( "(%p %p %p)\n", handle, io, io_status );
if (io) FIXME("Unimplemented yet parameter\n");
`
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3914
Assassin's Creed Origins clobbers rbx in its main module (second of three) TLS callbacks. That is apparent right in the beginning of the TLS callback disassembly when rbx is set to '4' unconditionally without any prior save. That leads to a fault in call_tls_callbacks() which is still in __TRY block and gets handled. However the third TLS callback is not executed and that leads to intermittent hangs later on.
It is rather involved to make a TLS callback test in Wine testsuite as there is no portable way to generate a custom TLS callback. I've made a test program (based on the example here: https://lallouslab.net/2017/05/30/using-cc-tls-callbacks-in-visual-studio-w…) and compiled it with MSVC. The source code is here: https://gist.github.com/gofman/3287a953bcab3a5c888a8d494461cb8a. The program calls all the callbacks on Windows 10 here.
There is also a similar wrapper already there for i386 on another occasion.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/427