Mailinglist Archive: opensuse-factory (340 mails)

< Previous Next >
Re: [opensuse-factory] gcc miscompilation on Factory i586?
  • From: Marcus Meissner <meissner@xxxxxxx>
  • Date: Tue, 21 Apr 2009 16:31:39 +0200
  • Message-id: <20090421143139.GA11641@xxxxxxx>
On Tue, Apr 21, 2009 at 04:24:40PM +0200, Wolfgang Rosenauer wrote:
Hi,

I've got a real weird issue by trying to update mozilla-nss for Factory
what I can only interpret as compiler issue or very weird coding issue.

mozilla-nss is running a comprehensive test suite during build which
currently only seems to fail on openSUSE_Factory i586.

It apparently works on x86_64, all older distributions and also in
Factory_staging.

https://build.opensuse.org/package/show?package=mozilla-nss&project=mozilla%3AFactory

In the failing buildlog one can see that it's crashing on a tool called
signtool with free() on an invalid pointer. (search for "- FAILED").

When I build locally I also get those cores dumped and looked into two
of them which show the following stack:

(gdb) bt
#0 0xb7be39d6 in raise () from /lib/libc.so.6
#1 0xb7be52d8 in abort () from /lib/libc.so.6
#2 0xb7c1fa25 in ?? () from /lib/libc.so.6
#3 0xb7c259c5 in ?? () from /lib/libc.so.6
#4 0xb7c2727b in free () from /lib/libc.so.6
#5 0xb7d45ab7 in PR_Free () from /usr/lib/libnspr4.so
#6 0xb7d89f41 in PORT_Free_Util (ptr=0x0) at secport.c:152
#7 0x0805b146 in jar_extract_mf (jar=0x8091f90, format=<value optimized
out>,
fp=0x8092048, ext=0x806a210 "sf") at jarfile.c:737
#8 0x0805b5b2 in jar_extract_manifests (fp=<value optimized out>,
format=<value optimized out>, jar=<value optimized out>) at
jarfile.c:611
#9 JAR_pass_archive (jar=0x8091f90, format=jarArchZip,
filename=0x80795c8 "nojs.jar", url=0x806c5f1 "some-url") at
jarfile.c:134
#10 0x08057c32 in VerifyJar (filename=0x80795c8 "nojs.jar") at verify.c:74
#11 0x0804e7fe in main (argc=9, argv=0xbfa54424) at signtool.c:1007


Looking at secport.c:152 I find:
void
PORT_Free(void *ptr)
{
if (ptr) {
PR_Free(ptr);
}
}

I'm really confused how the above stack can happen at all if ptr=0x0.

That's the reason why I'm actually thinking about some weird toolchain
thing. That's a _bit_ important to me as I need to update NSS for
different reasons and I don't want to disable the testsuite.

Any pointers for me on that?

free (NULL); is a good operation and will not abort().

ptr is not NULL at this point in time I think, the backtrace is just a bit
erroneous.

However, you corrupted memory earlier somewhere.

Can you run this in valgrind?

Ciao, Marcus
--
To unsubscribe, e-mail: opensuse-factory+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-factory+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References