Andree Leidenfrost wrote:
Package: libnewt0.52
Version: 0.52.2-5.1
Severity: important

Dear Alistair,

In version 0.52.2-5.1, the crashes in case libfribidi0 is not installed have returned. I am attaching a full backtrace of a non-stripped program (mondoarchive) using a non-stripped libnewt0.52 (0.52.2-5.1).

I believe this is really the same as #351367 and #290722.

0.52.2-5 is fine, the problem only starts with 0.52.2-5.1. Also as before, if libfribidi0 is installed, the problem goes away.

I presume the underlying reason is (from the changelog):

[...]
* Apply patch from Eugeniy Meshcheryako to regenerate configure during build
  so that bidi support is enabled again. Closes: #379566
[...]

Please let me know if you need any other information.

Best regards & thanks a lot
Andree


-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17-1-k7
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)

Versions of packages libnewt0.52 depends on:
ii  libc6                         2.3.6-15   GNU C Library: Shared libraries
ii  libslang2                     2.0.6-2    The S-Lang programming library - r

Versions of packages libnewt0.52 recommends:
ii  libfribidi0                   0.10.7-3   Free Implementation of the Unicode

-- no debconf information
------------------------------------------------------------------------

*** glibc detected *** free(): invalid next size (fast): 0x080cde88 ***

Program received signal SIGABRT, Aborted.
[Switching to Thread -1479103680 (LWP 10320)]
0xffffe410 in __kernel_vsyscall ()

(gdb) bt

#0  0xffffe410 in __kernel_vsyscall ()
#1  0xa7e806d1 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xa7e81f9b in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0xa7eb7157 in __fsetlocking () from /lib/tls/i686/cmov/libc.so.6
#4  0xa7ebd727 in malloc_usable_size () from /lib/tls/i686/cmov/libc.so.6
#5  0xa7ebdbc2 in free () from /lib/tls/i686/cmov/libc.so.6
#6  0xa7d6c48b in dlerror () from /lib/tls/i686/cmov/libdl.so.2
#7  0xa7d6c948 in dlopen () from /lib/tls/i686/cmov/libdl.so.2
#8  0xa7fa82a9 in wchar_to_textmod_visual (in=<value optimized out>, len=80,
    base_dir=0xafe6d378, need_out=1) at newt.c:258
Ok,


ignore my last reply about slang; it appears I had it backwards. Examining the issue in more depth,
the code fails in newt.c at:

 if (!handle)
handle = dlopen("/usr/lib/libfribidi.so.0", RTLD_LAZY | RTLD_GLOBAL);

from the backtrace it appears this is triggering a bug in _glibc_ rather than newt, but I cannot
reproduce it yet; could you do the following:

(1) upgrade libc6 to 2.3.6-16 to make sure the bug hasn't gone away
(2) produce a small test example; showing how to reproduce the bug with mindi, mondoarchive, etc.

I think perhaps clearing error state by calling dlerror() before each dlopen() call may fix it, ie.
--- newt.c-old  2006-07-28 07:16:21.000000000 +0100
+++ newt.c      2006-07-28 07:15:27.000000000 +0100
@@ -254,8 +254,10 @@
                                 FriBidiStrIndex *, FriBidiStrIndex *,
                                 FriBidiLevel *);

+    dlerror();  /* clear error state */
    if (!handle)
handle = dlopen("/usr/lib/libfribidi.so.0", RTLD_LAZY | RTLD_GLOBAL);
+    dlerror();
    if (!handle)
       handle = dlopen("/lib/libfribidi.so.0", RTLD_LAZY | RTLD_GLOBAL);
    if (!handle)

but I would like to ensure no bugs in glibc, too.

I am uploading a version of newt to experimental (0.52.2-6) which contains this fix to test
with,

Regards
Alastair



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to