sl4a icon indicating copy to clipboard operation
sl4a copied to clipboard

Can't load lua modules mime and socket at the same time (android linker problem)

Open damonkohler opened this issue 9 years ago • 2 comments

From @GoogleCodeExporter on May 31, 2015 11:24

What steps will reproduce the problem?
1. run "lua -l socket -l mime"
2. or run a script with require "socket" require "mime"

This means you can't use the Lua http client, for instance

What is the expected output? What do you see instead?
Loading of the second library fails, no matter which order you load them 
in. It says symbol not found.

What version of the product are you using? On what operating system?
Head revision of ASE, android 1.5 & 2.1

Please provide any additional information below.

The reason for the failure is that apparently the Android linker won't load 
two shared libraries with the same name - so mime/core.so and 
mime/socket.so can't both be loaded as it thinks they are the same library. 
So it tries to load the symbol it needs for the second from the first which 
fails, naturally.

One solution is to rename both the shared libraries and change the code 
that loads them, as in the attached patch.

Original issue reported on code.google.com by [email protected] on 16 Feb 2010 at 10:57

Attachments:

Copied from original issue: damonkohler/android-scripting#192

damonkohler avatar Jun 13 '15 20:06 damonkohler

From @GoogleCodeExporter on May 31, 2015 11:24

Thanks for the patch! I'll check it out and try to get it into the next release.

Original comment by [email protected] on 22 Feb 2010 at 10:14

damonkohler avatar Jun 13 '15 20:06 damonkohler

From @GoogleCodeExporter on May 31, 2015 11:24

I think I'm still having this issue with release 6:

> require("socket.http")
error loading module 'mime.core' from file 
'/data/data/com.googlecode.luaforandroid/files/lua/lib/lua/5.1/mime/core.so':
    Symbol not found: 
stack traceback:
    [C]: ?
    [C]: in function 'require'
    ...ecode.luaforandroid/files/lua/share/lua/5.1/mime.lua:13: in main chunk
    [C]: in function 'require'
    ...uaforandroid/files/lua/share/lua/5.1/socket/http.lua:14: in main chunk
    [C]: in function 'require'
    [string "print(require("socket.http"))..."]:1: in main chunk
    [...]

Original comment by [email protected] on 14 Jul 2012 at 5:13

damonkohler avatar Jun 13 '15 20:06 damonkohler