Re: FFI symbol resolution problems on Windows

  • From: Konstantin Olkhovskiy <lupus@xxxxxxxxxx>
  • To: luajit <luajit@xxxxxxxxxxxxx>
  • Date: Tue, 23 Dec 2014 08:36:45 +0400

2014-12-22 23:11 GMT+03:00 Mike Pall <mike-1412@xxxxxxxxxx>:

> IOW: I don't think LuaJIT is at fault here.


I don't think either.


> BTW: It looks like you're using a virtual drive in a VM, probably
> a mounted Linux host file system. This is known to fail in some
> cases. E.g. most installer EXEs only run when started from a
> 'real' drive (this can be a VM container, too, but not a network
> drive). Try copying the DLL to the Windows drive in the VM.
>

That was a promising idea, but looks like it does not work:

kolkhovskiy@kolkhovskiy-vb /c/work
$ cp /e/test.lua /e/luajit.exe /e/libapr-1-0.dll /e/libaprutil-1-0.dll
/e/libexpat-0.dll .

kolkhovskiy@kolkhovskiy-vb /c/work
$ ls
libapr-1-0.dll  libaprutil-1-0.dll  libexpat-0.dll  luajit.exe  test.lua

kolkhovskiy@kolkhovskiy-vb /c/work
$ ./luajit.exe test.lua
c:\work\luajit.exe: test.lua:10: cannot resolve symbol 'apr_env_get': The
specified procedure could not be found.

stack traceback:
        [C]: in function '__index'
        test.lua:10: in main chunk
        [C]: at 0x00401e70

This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.

kolkhovskiy@kolkhovskiy-vb /c/work
$ objdump.exe -x libapr-1-0.dll | grep apr_env_get
        [  52] apr_env_get@12
[1510](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x000154d0 _apr_env_get@12


Entire session copy-pasted from VirtualBox, /e is a shared folder and /c is
virtual drive with Windows installed. I also tried with the very basic
cmd.exe
instead of mingw bash, same result.

I glanced at the list of symbols, which dependency walker shows, and for
some
reason it does not have underscores, i.e. "apr_env_get@12", while objdump
claims it's there. So the dll is likely broken and it should be the root
cause, right?

Any other ideas on what is going on there?

-- 
Regards,
Konstantin

Other related posts: