[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [imagemagick] Strange bug in one of my packages need help (maybe glibc bug?)



On Wed, May 25, 2011 at 7:34 PM, Roger Leigh <rleigh@codelibre.net> wrote:
> On Wed, May 25, 2011 at 12:20:09PM +0200, Bastien ROUCARIES wrote:
>> Hi,
>>
>> I have two strange bug in my package imagemagick. I am really clueless about these.upstream have no idea also. Any help welcome
>> see #625250
>
> % c++filt  _ZNSt14error_categoryD2Ev
> std::error_category::~error_category()
>
> % nm -D /usr/lib/libstdc++.so.6 | grep _ZNSt14error_categoryD2Ev
> 0000003380272800 T _ZNSt14error_categoryD2Ev
>
> % nm -C -D /usr/lib/libstdc++.so.6 | grep error_category
> 0000003380272800 T std::error_category::~error_category()
>
> This is on a sid system.
>
> On squeeze:
> $ nm -D /usr/lib/libstdc++.so.6 | grep _ZNSt14error_categoryD2Ev
> $ echo $?
> 1
>
> If imagemagick was built against the current libstdc++ and run
> using an older libstdc++ without the symbol, you will get this
> error.
>
> I don't see any direct libstdc++ dependency in either the
> imagemagick package, or its library needed sections.  What's using
> libdjvulibre?  Is it being dlopened.

Yes it is dlopened

> If this is the case,
> libdjvulibre is using an old version of libstdc++, and that's an
> issue with its dependencies (and/or the libstdc++ symbol
> versioning).

Seems so, more strangely using LD_PRELOAD=/usr/lib64/libdjvulibre.so
or LD_BIND_NOW=1 fix this issue. Will reassign to libdvu

Seems related to http://bugs.gentoo.org/show_bug.cgi?id=365209

>
> You'll need a full stack trace to work out what's using this
> library if you haven't done so already.

It does not coredump. How can I get a backtrace ? using LD_DEBUG=all
option point to libdjvu

>> and #622591.
>
> For the latter, rebuild libuuid1 with debugging symbols and get
> a full stack trace.  Probably not a bug in libuuid: make sure that
> the caller is passing a valid uuid_t.  Here's how I use it:
>
>  uuid_t uuid;
>  char uuid_str[37];
>  uuid_generate(uuid);
>  uuid_unparse(uuid, uuid_str);
>  uuid_clear(uuid);
>
> Note that uuid_t is not a pointer, it's a char array which decays
> to a pointer:
>
> typedef unsigned char uuid_t[16];
>
> You can use gdb to check what its value is before the call to
> uuid_generate and after the segfault.


Will do thanks

Bastien
>
> Regards,
> Roger
>
> --
>  .''`.  Roger Leigh
>  : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
>  `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
>   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEARECAAYFAk3dPaIACgkQVcFcaSW/uEg99ACgjxB/PggjcZs1bnIha/Eo1vlo
> aOIAoKCeM8hOjG3+7z3nggcdIfAI/F7n
> =7ccc
> -----END PGP SIGNATURE-----
>
>


Reply to: