Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 19 Nov 2014 15:56:35 -0500
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: webkitfltk segfaults in do_relocs

On Wed, Nov 19, 2014 at 12:20:02PM -0800, Isaac Dunham wrote:
> On Wed, Nov 19, 2014 at 02:58:24PM -0500, Rich Felker wrote:
> > On Wed, Nov 19, 2014 at 11:48:28AM -0800, Isaac Dunham wrote:
> > > On Wed, Nov 19, 2014 at 02:13:11PM -0500, Rich Felker wrote:
> > > > It looks like it's trying to apply a relocation to a read-only part of
> > > > the mapping. Could you provide the output of readelf -a testapp? That
> > > > would let me get an idea what's going on. It's probably too big to
> > > > send as an attachment raw but compressing it with gzip will probably
> > > > make it okay, or you could just send a link to a pastebin or similar
> > > > (sprunge.us preferred).
> > > That's 31.1 MB, over four and a half gzipped, 2.1 MB XZ-compressed.
> > > 
> > > Not sure how to proceed.
> > 
> > Uhg. Do you have anywhere you can upload it and provide a link?
> > 
> > Rich
> > 
> 
> https://www.dropbox.com/s/2e9f91zclw5liei/wkfltk-readelf-a.xz?dl=1
> (unfortunately, you may need a browser).

Got it. The line number in your original report seems to be off by a
bit (it points to TLSDESC related cases) but I've found the offending
relocation(s):

0083deea  0000c402 R_386_PC32        00000000   exp
0083df03  00010a02 R_386_PC32        00000000   log
0083df1c  00030502 R_386_PC32        00000000   floor
0083df35  00024502 R_386_PC32        00000000   ceil

I have no idea why the linker is emitting these. It should have
resolved them at ld time to PLT entries in the main program's PLT, but
maybe since you're building as PIE (this is defautl on Alpine) that
doesn't happen (this would be a linker bug, IMO). If it were going
to do this (leave the relocations in the output), it should mark the
program as DT_TEXTREL (having textrels), but this is probably
suppressed for PIE because it's not supposed to happen.

My best guess as to what's triggering the problem is that there's some
nasty asm or other hacks that are not PIE-compatible somewhere in the
program. It's also possible that you're pulling in static libraries
(which would not be PIE-compatible) due to not having the dynamic
version of a needed library installed.

Finding which .o or .a file these references to exp/log/floor/ceil are
coming from would help narrow down the source of the problem.
Alternatively you could try building as non-PIE.

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.