On Fri, 22 Jul 2022 16:45:55 GMT, Jorn Vernee <[email protected]> wrote:
>> This patch removes the use of std::thread from the `java.lang.foreign`
>> tests, and switches to the OS specific thread APIs, in order to change
>> things such as the stack size on some platforms where this is required in
>> the future (see the JBS issue).
>>
>> This is done by adding a small header-only library that exposes a function
>> to run code in freshly spawned threads (`run_async`).
>>
>> Testing: Running the affected tests on platforms that implement the linker.
>
> Jorn Vernee has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Fixes
Hi @JornVernee,
good job and thanks for doing it so quickly. Looks good, module the
GetLastError comment.
About the stack size and Alpine, I am fine with doing the Aĺpine-specific fix
in a follow-up, or you can do it as part of this change. Strictly speaking its
not part of this bug report to adjust the stack size.
If you fix the GetLastError issue, I don't need another look.
Thanks, Thomas
test/lib/native/testlib_threads.h line 50:
> 48: static void fatal(const char* message) {
> 49: perror(message);
> 50: exit(-1);
Won't work as intended for Windows APIs. I would print the result of
`GetLastError()` instead.
Alternatively I am fine fine with just omitting the error code, because I think
the old tests did not handle errors either. Or did we catch std::thread
exceptions somewhere?
test/lib/native/testlib_threads.h line 61:
> 59: helper->proc(helper->context);
> 60: return 0;
> 61: }
I'm curious, does this only exist because of the DWORD vs void* return value
size of the native thread functions? I wondered why you don't just pass the
test procedure to the thread start API directly.
About stdcall, does Oracle still build Windows 32bit?
-------------
Marked as reviewed by stuefe (Reviewer).
PR: https://git.openjdk.org/jdk/pull/9599