#2150: t/library/nciutils.t fails on windows
-------------------------+--------------------------------------------------
Reporter: whiteknight | Owner:
Type: bug | Status: new
Priority: critical | Milestone:
Component: testing | Version: master
Severity: fatal | Keywords: nci
Lang: | Patch:
Platform: all |
-------------------------+--------------------------------------------------
t/library/nciutils.t is failing on windows. This is because of a
particular expected behavior that is not supported on that platform. On
windows, passing a NULL handle to GetProcAddress returns a null function
pointer (equivalent operations on linux, a NULL library handle will look
up the function in the current process).
I fixed a related failure in #2148 by checking in
src/platform/win32/dl.c:Parrot_dlsym for a NULL handle, and calling
GetModuleHandle("libparrot"). That call looks up the libparrot binary in
the current executing process, and returns a handle to it. Passing that
handle to GetProcAddress allows us to find function in libparrot. That
works (so long as the module is called "libparrot", which might be a
little bit brittle, but that's another issue)
t/library/nciutils.t uses a null library handle to look up functions from
libc, which works on linux because a null handle looks up in the current
process. My fix on windows only looks up the function in the libparrot
module. I don't know if there is a way to look up a function in an entire
process, but I haven't been able to find such a method yet.
There are two options:
- Change the test to explicitly load a library by name, instead of using
a null library PMC and hoping the magic behavior just works in a cross-
platform way
- Mark the test TODO on windows, and keep searching for a way to make it
work the same way as it does on Linux.
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/2150>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets