[uClibc] [uClibc 0000214]: ldso crash with alsa on ppc
Rob Landley
rob at landley.net
Mon Apr 11 21:10:17 UTC 2005
On Monday 11 April 2005 09:48 am, bugs at busybox.net wrote:
> A NOTE has been added to this issue.
> ======================================================================
> <http://busybox.net/bugs/view.php?id=214>
> ======================================================================
> Reported By: aurel
> Assigned To: uClibc
> ======================================================================
> Project: uClibc
> Issue ID: 214
> Category: Shared Library Support
> Reproducibility: always
> Severity: crash
> Priority: normal
> Status: assigned
> ======================================================================
> Date Submitted: 04-06-2005 15:37 PDT
> Last Modified: 04-11-2005 06:48 PDT
> ======================================================================
> Summary: ldso crash with alsa on ppc
> Description:
> I've just tried to update from uClibc-20050310 to uClibc-20050406 and this
> introduced a crash in MPlayer when using -ao alsa. This crash only
> happens
> on ppc (iMac G3), not on x86.
> I narrowed down this crash between 20050320 and 20050321, and more
> precisely to patch 10044 :
> http://uclibc.org/cgi-bin/viewcvs.cgi/trunk/uClibc/ldso/ldso/ldso.c?rev=100
>44&r1=10037&r2=10044 I investigated a bit further and found a fix by
> reintroducing some lines that were dropped by patch 10044. I know this is
> certainly not the right fix, but it may help to understand the problem, and
> at lest it fixes the bug for me in the meantime.
> So here is the patch I made. I don't understand all the details of ldso,
> but I will try to help to solve this issue if you tell me what to do.
> ======================================================================
>
> ----------------------------------------------------------------------
> aurel - 04-06-05 16:04
> ----------------------------------------------------------------------
> Sorry but I've done my x86 tests a bit too quickly. In fact I have exactly
> the
> same problem on x86, so it's not related to ppc at all.
>
> ----------------------------------------------------------------------
> jocke - 04-06-05 23:53
> ----------------------------------------------------------------------
> I suppose the crash(SEGV?) happens at exit()?
> Please compile ldso with debugging support and set env. variable
> LD_DEBUG=1 while executing alsa. Post the debug output. Run ldso
> unpatched
> and with your patch.
>
> ----------------------------------------------------------------------
> aurel - 04-07-05 09:30
> ----------------------------------------------------------------------
> No, the bug don't happens at exit() ! It happens during mplayer
> initialisation.
> Here are the full logs of a crashing session, and a working session
> using my patch. I also included a diff between the 2 logs.
>
> It seems that the first "Trying to dlopen '/usr/lib/libasound.so.2'"
> behave exactly the same, but second and third dlopen of libasound
> behave differently.
>
> Do you need any more output ?
>
> ----------------------------------------------------------------------
> jocke - 04-07-05 15:52
> ----------------------------------------------------------------------
> Let me check if I got this right:
> mplayer depends on libasound so it gets loaded by ldso.
> Some dlopens.
> Then mplayer executes a sh script which in turn executes test after
> which mplayer dlopens libasound even though libasound already
> got loaded by ldso at startup?
>
> Seems a bit stupid to dlopen libasound when mplayer already
> depends on it, but it should work.
>
> If the above is true, I think I know what the problem is and libdl
> needs to be fixed
>
> ----------------------------------------------------------------------
> aurel - 04-09-05 13:03
> ----------------------------------------------------------------------
> No that's not exactly true, but the idea is quite the same.
>
> mplayer depends on libasound, so it gets loaded by ldso.
> Then, mplayer DON'T load any sh script ;-)
> Then mplayer call some functions from libasound. Some of
> thoses functions in libasound itself are then trying to
> dlopen libasound. Yes libasound try to dlopen itself !
> I find this quite stupid, but that's the way it works.
>
> So your guess about the problem is probably right. It's
> probably due to libasound being dlopened after having been
> loaded by ldso.
>
> ----------------------------------------------------------------------
> jocke - 04-10-05 02:45
> ----------------------------------------------------------------------
> OK, my guess is still valid then, good. Just for the record, the problem
> is
> in libdl, adding a _dl_fini() to ldso just exposed the bug. Your patch
> restoring the old behaviour works around the bug in libdl. Fixing libdl
> will take some effort and I don't have much time the next 2 weeks as my
> company
> has merged with another company and they are moving into our site next
> week.
>
> ----------------------------------------------------------------------
> jocke - 04-11-05 04:44
> ----------------------------------------------------------------------
> Could you try the libdl_1.patch(against curren SVN)? I just added?
> I think this will solve you problem, but there are still a few issues
> I want to fix before commiting anaything.
>
> ----------------------------------------------------------------------
> aurel - 04-11-05 06:48
> ----------------------------------------------------------------------
> libdl_1.patch fixes the bug perfectly !
> Nice work. Thank you very much.
>
> Issue History
> Date Modified Username Field Change
> ======================================================================
> 04-06-05 15:37 aurel New Issue
> 04-06-05 15:37 aurel File Added: 01_ppc_ldso_fix.diff
>
> 04-06-05 16:04 aurel Note Added: 0000132
> 04-06-05 23:53 jocke Note Added: 0000134
> 04-07-05 09:29 aurel File Added: crashing.log
> 04-07-05 09:29 aurel File Added: patched.log
> 04-07-05 09:29 aurel File Added: log.diff
> 04-07-05 09:30 aurel Note Added: 0000136
> 04-07-05 15:52 jocke Note Added: 0000137
> 04-09-05 13:03 aurel Note Added: 0000138
> 04-10-05 02:45 jocke Note Added: 0000139
> 04-11-05 04:44 jocke File Added: libdl_1.patch
> 04-11-05 04:44 jocke Note Added: 0000140
> 04-11-05 06:48 aurel Note Added: 0000141
> ======================================================================
If this was a normal list email I was replying to, you'd yell at me for not
trimming to relevant context. And you'd be right. But since it's a
subversion spam, I presume never trimming any context and just reposting the
whole history verbatim over and over is the expected way of doing things...
</gripe>
Rob
More information about the uClibc
mailing list