Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160623171008.GY10893@brightrain.aerifal.cx>
Date: Thu, 23 Jun 2016 13:10:08 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: musl ldd: swt build: Error relocating / symbol not found

On Thu, Jun 23, 2016 at 03:39:46PM +0000, Andrei Pozolotin wrote:
> Rich:
> 
> On 06/23/2016 04:24 AM, Rich Felker wrote:
> > On Thu, Jun 23, 2016 at 03:35:02AM +0000, Andrei Pozolotin wrote:
> >>     https://github.com/random-alpiner/repository/blob/master/bugs/01/1-app.log
> >>     https://github.com/random-alpiner/repository/blob/master/bugs/01/2-ldd.log
> >>     https://github.com/random-alpiner/repository/blob/master/bugs/01/3-readelf.log
> >>
> >> My first guess would be that something else in the application
> >> (eclipse) has already caused an older/stale version of libgobject to
> >> be loaded, so that the version containing the symbol definition does
> >> not get loaded. You could confirm this by running strace on the
> >> program and checking what library files it loads/maps.
> Thank you for the tip.
> 
> 1) the trace shows:
> https://github.com/random-alpiner/repository/blob/master/bugs/01/4-strace.log
> 
> 2) that the proper /usr/lib/libgobject-2.0.so.0 is in fact loaded before
> /usr/lib/libswt-atk-gtk-4530.so
> 
> 3) however, the loading starts from
> /home/work/space/none-4.5.0/conf/org.eclipse.osgi/748/0/.cp/libswt-gtk-4530.so,
> 
> which is an eclipse default library bundled with the eclipse
> application, and which is compiled against foreign libc.6.so:
> 
> lddtree /home/work/space/none-4.5.0/conf/org.eclipse.osgi/748/0/.cp/libswt-gtk-4530.so
> libswt-gtk-4530.so => /home/work/space/none-4.5.0/conf/org.eclipse.osgi/748/0/.cp/libswt-gtk-4530.so (interpreter => none)
>     libc.so.6 => not found

OK so it looks like you're trying to run foreign glibc binaries with
musl. That might or might not work, and in this case it seems to be
not working. You really should be using a build of eclipse and all its
libraries against musl rather than putting glibc-linked binaries on
the system.

> 4) the library  loading logic of eclipse is: first try to load bundled
> libraries from private paths,
> and if that fails, then try to load these libraries from the public
> paths, such as "/usr/lib/*", etc.
> 
> 5) I do provide replacement libswt-* libraries built against musl on the
> public path "/usr/lib/*",
> and the assumption was that when private path library loading fails,
> then the library will be loaded from the public path, which "sort of
> almost works",
> so:
> * was that a wrong assumption? 
> * will in fact musl ld.so reject libraries linked to the libc.so.6?

No, it will use them.

> * if not, is there a way to tell musl ld.so to blacklist private path
> libraries?

No, but you could just rm (or mv) them. But I suspect you'll still run
into other problems. Support for using glibc-linked programs/libraries
is inherently error-prone and really only intended for use in
situations where you can't get a properly-built binary (e.g. Flash
plugin).

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.