Closed Bug 561454 Opened 14 years ago Closed 12 years ago

Perma-red on Linux x86-64 mozilla-1.9.2: "../../staticlib/libxpcom_core.a(nsXPComInit.o): relocation R_X86_64_PC32 against `base::Thread::Options::Options()' can not be used when making a shared object; recompile with -fPIC"

Categories

(Core :: IPC, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: dholbert, Unassigned)

References

Details

(Keywords: intermittent-failure)

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox3.6/1272047171.1272050424.13567.gz
Linux x86-64 mozilla-1.9.2 leak test build on 2010/04/23 11:26:11

{
rm -f libxul.so
/tools/gcc/bin/g++  -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe  -DDEBUG -D_DEBUG -DDEBUG_cltbld -DTRACING -g -fno-inline -fPIC -shared -Wl,-z,defs -Wl,-h,libxul.so -o libxul.so  nsStaticXULComponents.o nsUnicharUtils.o nsCompressedCharMap.o nsBidiUtils.o nsRDFResource.o     -lpthread          -Wl,-rpath-link,/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/dist/bin -Wl,-rpath-link,/usr/local/lib -Wl,--whole-archive ../../embedding/browser/gtk/src/libgtkembedmoz.a ../../toolkit/xre/libxulapp_s.a  ../../staticlib/components/libxpconnect.a ../../staticlib/components/libnecko.a ../../staticlib/components/libuconv.a ../../staticlib/components/libi18n.a ../../staticlib/components/libchardet.a ../../staticlib/components/libjar50.a ../../staticlib/components/libpref.a ../../staticlib/components/libcaps.a ../../staticlib/components/libhtmlpars.a ../../staticlib/components/libimglib2.a ../../staticlib/components/libgklayout.a ../../staticlib/components/libdocshell.a ../../staticlib/components/libembedcomponents.a ../../staticlib/components/libwebbrwsr.a ../../staticlib/components/libnsappshell.a ../../staticlib/components/libtxmgr.a ../../staticlib/components/libchrome.a ../../staticlib/components/libcommandlines.a ../../staticlib/components/libtoolkitcomps.a ../../staticlib/components/libpipboot.a ../../staticlib/components/libpipnss.a ../../staticlib/components/libjsctypes.a ../../staticlib/components/libgkplugin.a ../../staticlib/components/libmozfind.a ../../staticlib/components/libappcomps.a ../../staticlib/components/libunixproxy.a ../../staticlib/components/libxpinstall.a ../../staticlib/components/libjsd.a ../../staticlib/components/libautoconfig.a ../../staticlib/components/libauth.a ../../staticlib/components/libcookie.a ../../staticlib/components/libpermissions.a ../../staticlib/components/libuniversalchardet.a ../../staticlib/components/libcomposer.a ../../staticlib/components/librdf.a ../../staticlib/components/libwindowds.a ../../staticlib/components/libintlapp.a ../../staticlib/components/libfileview.a ../../staticlib/components/libstoragecomps.a ../../staticlib/components/libplaces.a ../../staticlib/components/libtkautocomplete.a ../../staticlib/components/libsatchel.a ../../staticlib/components/libpippki.a ../../staticlib/components/libucvmath.a ../../staticlib/components/libwidget_gtk2.a ../../staticlib/components/libsystem-pref.a ../../staticlib/components/libgkgfxthebes.a ../../staticlib/components/libaccessibility.a ../../staticlib/components/libremoteservice.a ../../staticlib/components/libspellchecker.a ../../staticlib/components/libzipwriter.a ../../staticlib/libdomplugins_s.a ../../staticlib/libmozipc_s.a ../../staticlib/libmozipdlgen_s.a ../../staticlib/libchromium_s.a ../../staticlib/libgfxipc_s.a ../../staticlib/libxpcom_core.a ../../staticlib/libucvutil_s.a ../../staticlib/libgkgfx.a ../../staticlib/libmozreg_s.a ../../staticlib/libmorkreader_s.a ../../staticlib/libgtkxtbin.a ../../staticlib/libgfxpsshar.a ../../staticlib/libthebes.a  -Wl,--no-whole-archive -L../../dist/lib -lsqlite3 -L../../dist/bin -L../../dist/lib  -L../../dist/bin -L../../dist/lib -L../../jpeg -lmozjpeg -L../../modules/libimg/png -lmozpng ../../gfx/qcms/libmozqcms.a -L/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/dist/bin -lmozjs -L../../dist/bin -L../../dist/lib -lcrmf -lsmime3 -lssl3 -lnss3 -lnssutil3 ../../gfx/cairo/cairo/src/libmozcairo.a ../../gfx/cairo/libpixman/src/libmozlibpixman.a   -L/usr/lib64 -lXrender -lfreetype -lfontconfig  -L../../modules/zlib/src -lmozz -L/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L/lib64 -ldbus-glib-1 -ldbus-1 -lglib-2.0   -L/usr/lib64 -lX11  -lXext  -L/lib64 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0   -L/lib64 -lgtk-x11-2.0 -latk-1.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0   -lXt -lgthread-2.0 -lfreetype -lasound -ldl -lm  -lrt    
/usr/bin/ld: ../../staticlib/libxpcom_core.a(nsXPComInit.o): relocation R_X86_64_PC32 against `base::Thread::Options::Options()' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
NEXT ERROR make[4]: *** [libxul.so] Error 1
make[4]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/toolkit/library'
NEXT ERROR make[3]: *** [libs_tier_toolkit] Error 2
make[3]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox'
make[2]: *** [tier_toolkit] Error 2
make[2]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox'
make: *** [build] Error 2
program finished with exit code 2
}


This tinderbox column has been perma-red since mid-march at least (I didn't look further back than that), though at that point the failure is different (not sure when it changed to its current form):

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox3.6/1269889107.1269892893.22339.gz
Linux x86-64 mozilla-1.9.2 leak test build on 2010/03/29 11:58:27
{
Makefile:70: *** You need to build with --enable-libxul (the default, unless you specify
--disable-libxul or --enable-shared or --enable-debug) to package a build..  Stop.
make[2]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/browser/installer'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/builds/slave/mozilla-1.9.2-linux64-debug/build/obj-firefox/browser/installer'
make: *** [package] Error 2
}
I remember us fixing this on trunk, but I don't remember what the fix was. Using gcc 4.3 instead of 4.2, perhaps?
Component: XPCOM → IPC
QA Contact: xpcom → ipc
FWIW, the earlier "You need to build with --enable-libxul" failure started happening between these two logs:

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox3.6/1268695249.1268699738.28837.gz
Linux x86-64 mozilla-1.9.2 leak test build on 2010/03/15 16:20:49

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox3.6/1269273037.1269276834.28731.gz
Linux x86-64 mozilla-1.9.2 leak test build on 2010/03/22 08:50:37

(For whatever reason, there are no cycles in that column between those two logs.)
(In reply to comment #3)
> FWIW, the earlier "You need to build with --enable-libxul" failure started
> happening between these two logs:

(... and before that (up to & including the log on 3/15), that column is green. It's red ever since then.)
I also seem to recall that upgrading gcc made this go away, but that was a long time ago.
FWIW, I haven't tried to build a current 1.9.2 yet, but when i tried to build the lorentz branch when the first lorentz beta was released, I didn't have this problem on x86-64, and I am building with gcc-4-4.
That being said, that could very well be a visibility related (gcc) bug.
and as I'm using gcc-4.4, configure gets me to use the system wrappers and gcc_hidden.h, instead of -fvisibility=hidden.
Here is a possible cause, in ipc/chromium/Makefile.in:

# TODO: remove this hack when we switch to GCC 4.3! GCC 4.1
# instantiates template declarations in wrapped system headers with
# the wrong visibility, which is causing the Linux tinderboxen to die in
# std::string internals.
VISIBILITY_FLAGS=

libchromium_s.a is built without the -fvisibility=hidden flag, which means its symbols are not marked as hidden, while the symbols as referenced in nsXPComInit.o are marked as hidden (since thread.h doesn't set the visibility to default)
> libchromium_s.a is built without the -fvisibility=hidden flag, which means its
> symbols are not marked as hidden, while the symbols as referenced in
> nsXPComInit.o are marked as hidden (since thread.h doesn't set the visibility
> to default)

But even then, that shouldn't be a problem, as these symbols are local to each object file they are used in.

Anyways, even with gcc 4.1 or 4.2, I don't get this error with the same configure flags, so that could be a problem with ld.
Mass marking whiteboard:[orange] bugs WFM (to clean up TBPL bug suggestions) that:
* Haven't changed in > 6months
* Whose whiteboard contains none of the strings: {disabled,marked,random,fuzzy,todo,fails,failing,annotated,leave open,time-bomb}
* Passed a (quick) manual inspection of bug summary/whiteboard to ensure they weren't a false positive.

I've also gone through and searched for cases where the whiteboard wasn't labelled correctly after test disabling, by using attachment description & basic comment searches. However if the test for which this bug was about has in fact been disabled/annotated/..., please accept my apologies & reopen/mark the whiteboard appropriately so this doesn't get re-closed in the future (and please ping me via IRC or email so I can try to tweak the saved searches to avoid more edge cases).

Sorry for the spam! Filter on: #FFA500
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
Whiteboard: [orange]
You need to log in before you can comment on or make changes to this bug.