Closed Bug 183894 Opened 22 years ago Closed 22 years ago

undefined symbol: XineramaIsActive

Categories

(SeaMonkey :: Build Config, defect)

x86
Linux
defect
Not set
blocker

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.3beta

People

(Reporter: ervin.nemeth+org.mozilla.bugzilla, Assigned: netscape)

Details

User-Agent:       Mozilla/4.79 [en] (X11; U; Linux 2.4.19 i686; Nav)
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3a) Gecko/20021206 <developer build>

Mozilla won't start:
mozilla-bin: relocation error: /.../libgfx_gtk.so: undefined symbol:
XineramaIsActive

20021204 hadn't got this problem.  Where is this symbol defined?  libgfx_gtk.so
is also using XineramaQueryScreens but

LD_LIBRARY_PATH=/opt/Mozilla/bin ldd
/usr/src/misc/Mozilla/mozilla/dist/bin/components/libgfx_gtk.so | awk '{ print
$3 }' | xargs fgrep -l Xinerama

returns nothing.


Reproducible: Always

Steps to Reproduce:
1.
2.
3.
same error here, built today, 7 dec 02 on fresh checkout for linux os.  only
occurs when 

ac_add_options --enable-xinerama

appears in .mozconfig file.  does not exhibit this behavior when the option is
commented out (but of course then mozilla isn't xinerama capable, duh)
Must be a linking problem since XineramaIsActive was added by Blizzard a year ago. Makefile.in was modified on Dec. 3 by bstell%ix.netcom.com.
if you erase libgfx_gtk.so and rebuild it ("make libs" from gfx/src/gtk), does
it link in Xinerama (-lXinerama)?
Since the bug occured I was trying to build Mozilla several times after an (rm
config.* ; make clean)  This gets rid of the libraries, too, AFAIK.

Every time the same result.
right, but does it link in Xinerama when it links libgfx_gtk.so?

==> Build Config
Assignee: dougt → seawood
Component: XPCOM → Build Config
QA Contact: scc → granrose
gtk/src/gfx/Makefile.in looks correct.  MOZ_XINERAMA_LIBS (-lXinerama) should be
added to the link line if you configured with --enable-xinerama & the xinerama
header & lib are detected.  

After some googling, this looks like a bug with some other library that's being
linked in.  According to the post at
http://article.gmane.org/gmane.comp.video.mplayer.user/7144/match=xineramaisactive
, Xinerama's a static lib so that symbol should never show up as undefined in
our library.

What does the complete link line look like? Can you build previous releases now
using the --enable-xinerama option?

Here is the linker line:

c++ -I/usr/X11R6/include -frtti -fexceptions -Wall -Wconversion -Wpointer-arith
-Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-long-long
-pipe -O3 -march=pentium2 -mmmx -msse -mfpmath=sse,387 -funroll-loops
-maccumulate-outgoing-args -fforce-addr -fprefetch-loop-arrays
-fmove-all-movables -freduce-all-givs -fshort-wchar -pthread -pipe  -DNDEBUG
-DTRIMMED -ffunction-sections -w -I/usr/gtk/include/gtk-1.2
-I/usr/gtk/include/glib-1.2 -I/usr/gtk/lib/glib/include -I/usr/X11R6/include 
-fPIC -shared -Wl,-h -Wl,libgfx_gtk.so -o libgfx_gtk.so  nsPrintdGTK.o
gtkdrawing.o xprintutil.o nsDeviceContextGTK.o nsDeviceContextSpecFactoryG.o
nsDeviceContextSpecG.o nsDrawingSurfaceGTK.o nsGfxFactoryGTK.o
nsGraphicsStateGTK.o nsImageGTK.o nsGCCache.o nsRenderingContextGTK.o
nsScreenGtk.o nsScreenManagerGtk.o nsPrintOptionsGTK.o nsFontMetricsUtils.o
nsAntiAliasedGlyph.o nsFontFreeType.o nsFT2FontNode.o nsFT2FontCatalog.o
nsX11AlphaBlend.o nsXFontAAScaledBitmap.o nsXFontNormal.o nsFontMetricsGTK.o
nsGdkUtils.o nsRegionGTK.o nsNativeThemeGTK.o    -Wl,-O1,-z,combreloc  
-Wl,--version-script
-Wl,../../../build/unix/gnu-ld-scripts/components-version-script -Wl,-Bsymbolic
-L../../../dist/bin -L../../../dist/lib -lgkgfx -lgfxshared_s -lXinerama
-lgtksuperwin -L../../../dist/bin -lxpcom  -L../../../dist/bin
-L/usr/src/misc/Mozilla/mozilla/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl 
-L../../../dist/bin -lmozjs  -L/usr/gtk/lib -L/usr/X11R6/lib -lgtk -lgdk
-rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm   -L/usr/X11R6/lib -lXp -lXext
-lX11 -ldl -lm    

Lately I was using Mozilla without Xinerama.  This line is a result after a
reconfig with Xinerama enabled and only the gfx subdirectory was rebuilt.  Now
Mozilla starts correctly, but I will do a full rebuild shortly (takes some time).
> Lately I was using Mozilla without Xinerama.  This line is a result after a
> reconfig with Xinerama enabled and only the gfx subdirectory was rebuilt.  Now

You only rebuilt the gfx subdir or only the gfx subdir was rebuilt when you ran
a build?  Since xinerama adds a cpp define, I would have expected everything to
rebuild since mozilla-config.h changed.

> Mozilla starts correctly, but I will do a full rebuild shortly (takes some time).

When you rebuild, try touching dist/bin/.autoreg before you try running.  It
will cause the new library to be registered and that should trigger the error
you saw before if it still exists.

Reporting a working Mozilla.  Mozilla full-build from CVS with Xinerama just
finished.  The result has no problem with missing Xinerama symbols.
Weird.  Afaik, nothing changed on our end.  Marking invalid.
Status: UNCONFIRMED → RESOLVED
Closed: 22 years ago
Resolution: --- → INVALID
I got the error after I built the cvs trunk two hours ago.
I think there is still a problem, but I don't know details.
Rosenauer, I would suggest that you follow the directions from the link in
comment #6 and verify that none of your system shared libraries are exporting
that symbols erroneously.
I've checked my build-system and I cannot find a shared object which exports
XineramaIsActive.
There is only /usr/X11R6/lib/libXinerama.a
When I build 1.2.1 in the very same build-system I don't get such an error.
But I found this in the build-log after the link-line:

nsScreenManagerGtk.o: In function `nsScreenManagerGtk::EnsureInit(void)':
nsScreenManagerGtk.o(.nsScreenManagerGtk::text.EnsureInit(void)+0x93): undefined
 reference to `XineramaIsActive'
nsScreenManagerGtk.o(.nsScreenManagerGtk::text.EnsureInit(void)+0xac): undefined
 reference to `XineramaQueryScreens'

I don't get this, when I build 1.2.1.
OK, here is further information:
the linking call miss -lXinerama in 1.3a even 
if --enable-xinerama is set.
So libXinerama.a is not statically linked in.
I think this bug should be reopened!

some parts of the build-log:
...
./configure --enable-configure --disable-tests --disable-debug '--enable-optim
ize=-O2 -march=i486 -mcpu=i686' --disable-dtd-debug --disable-logging --enable-e
xtensions --disable-short-wchar --enable-crypto --enable-mathml --enable-reorder
 --enable-strip --with-default-mozilla-five-home=/opt/mozilla --libdir=/opt/mozi
lla/lib --sysconfdir=/etc --prefix=/opt/mozilla --enable-ldap-experimental --wit
h-system-jpeg --with-system-png --with-system-mng --with-system-zlib --enable-xi
nerama
...
checking for XineramaIsActive in -lXinerama... yes
checking for X11/extensions/Xinerama.h... yes
...
#define MOZ_ENABLE_XINERAMA 1
...
Which link line is missing the -lXinerama ?  And please verify this with a trunk
build.
the linker line of libgfx_gtk.so. The library which print the error of course.
Verified with a cvs checkout from 2002-12-17 22:42 CET
As with comment #7, I want to see the actual commands that your build is using
to link libgfx_gtk.so.  And check to see if MOZ_ENABLE_XINERAMA is actually set
in config/autoconf.mk .
c++  -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -
Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -pedantic -Wno-long-long -O2 
-march=i486 -mcpu=i686 -pthread -pipe  -DNDEBUG -DTRIMMED -ffunction-sections -O
2 -march=i486 -mcpu=i686 -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/l
ib/glib/include -I/usr/X11R6/include  -fPIC -shared -Wl,-h -Wl,libgfx_gtk.so -o 
libgfx_gtk.so  nsPrintdGTK.o gtkdrawing.o xprintutil.o nsDeviceContextGTK.o nsDe
viceContextSpecFactoryG.o nsDeviceContextSpecG.o nsDrawingSurfaceGTK.o nsGfxFact
oryGTK.o nsGraphicsStateGTK.o nsImageGTK.o nsGCCache.o nsRenderingContextGTK.o n
sScreenGtk.o nsScreenManagerGtk.o nsPrintOptionsGTK.o nsFontMetricsUtils.o nsAnt
iAliasedGlyph.o nsFontFreeType.o nsFT2FontNode.o nsFT2FontCatalog.o nsX11AlphaBl
end.o nsXFontAAScaledBitmap.o nsXFontNormal.o nsFontMetricsGTK.o nsGdkUtils.o ns
RegionGTK.o nsNativeThemeGTK.o       -Wl,--whole-archive ../../../dist/lib/libgf
xft2_s.a -Wl,--no-whole-archive  -Wl,--version-script -Wl,../../../build/unix/gn
u-ld-scripts/components-version-script -Wl,-Bsymbolic -L../../../dist/bin -L../.
./../dist/lib -lgkgfx -lgfxshared_s  -lgtksuperwin -L../../../dist/bin -lxpcom  
-L../../../dist/bin -L/usr/src/packages/BUILD/mozilla/dist/lib -lplds4 -lplc4 -l
nspr4 -lpthread -ldl  -L../../../dist/bin -lmozjs  -L/usr/lib -L/usr/X11R6/lib -
lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm   -L/usr/X11R6/
lib -lXp -lXext -lX11 -ldl -lm    
nsScreenManagerGtk.o: In function `nsScreenManagerGtk::EnsureInit(void)':
nsScreenManagerGtk.o(.nsScreenManagerGtk::text.EnsureInit(void)+0x93): undefined
 reference to `XineramaIsActive'
nsScreenManagerGtk.o(.nsScreenManagerGtk::text.EnsureInit(void)+0xac): undefined
 reference to `XineramaQueryScreens'

MOZ_ENABLE_XINERAMA     = 1
MOZ_XINERAMA_LIBS       = -lXinerama
is set in config/autoconf.mk
What version of GNU make are you using?
Also, try moving the MOZ_ENABLE_XINERAMA ifdef block to the spot right after the
rules.mk include.  EXTRA_DSO_LDOPTS may be getting evaluated immediately instead
of being deferred.
Hygiea:/# make -v
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for i686-pc-linux-gnu

Do you mean the part in gfx/src/gtk/Makefile?
I will check it out.
If *I* do a make, the linker line does contain the -lXinerama option.  Wolfgang,
what happens if you do a "make clean" in the gfx subdirectory then rebuild
Mozilla?  Possibly this was the solution in my case.
OK, using the following patch it seems to be alright:

--- gfx/src/gtk/Makefile.in
+++ gfx/src/gtk/Makefile.in
@@ -135,6 +135,10 @@
 
 include $(topsrcdir)/config/rules.mk
 
+ifdef MOZ_ENABLE_XINERAMA
+GFX_XINERAMA_LIBS += $(MOZ_XINERAMA_LIBS)
+endif
+
 ifdef MOZ_ENABLE_GTK
 EXTRA_DSO_LDOPTS += \
                $(LIBS_DIR) \
@@ -160,10 +164,6 @@
 CXXFLAGS       += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS)
 CFLAGS         += $(MOZ_GTK_CFLAGS) $(MOZ_GTK2_CFLAGS)
 
-ifdef MOZ_ENABLE_XINERAMA
-GFX_XINERAMA_LIBS += $(MOZ_XINERAMA_LIBS)
-endif
-
 ifeq ($(OS_ARCH), Linux)
 DEFINES         += -D_BSD_SOURCE
 endif

the linker line is now:

c++  -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -
Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -pedantic -Wno-long-long -O2 
-march=i486 -mcpu=i686 -pthread -pipe  -DNDEBUG -DTRIMMED -ffunction-sections -O
2 -march=i486 -mcpu=i686 -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/l
ib/glib/include -I/usr/X11R6/include  -fPIC -shared -Wl,-h -Wl,libgfx_gtk.so -o 
libgfx_gtk.so  nsPrintdGTK.o gtkdrawing.o xprintutil.o nsDeviceContextGTK.o nsDe
viceContextSpecFactoryG.o nsDeviceContextSpecG.o nsDrawingSurfaceGTK.o nsGfxFact
oryGTK.o nsGraphicsStateGTK.o nsImageGTK.o nsGCCache.o nsRenderingContextGTK.o n
sScreenGtk.o nsScreenManagerGtk.o nsPrintOptionsGTK.o nsFontMetricsUtils.o nsAnt
iAliasedGlyph.o nsFontFreeType.o nsFT2FontNode.o nsFT2FontCatalog.o nsX11AlphaBl
end.o nsXFontAAScaledBitmap.o nsXFontNormal.o nsFontMetricsGTK.o nsGdkUtils.o ns
RegionGTK.o nsNativeThemeGTK.o       -Wl,--whole-archive ../../../dist/lib/libgf
xft2_s.a -Wl,--no-whole-archive  -Wl,--version-script -Wl,../../../build/unix/gn
u-ld-scripts/components-version-script -Wl,-Bsymbolic -L../../../dist/bin -L../.
./../dist/lib -lgkgfx -lgfxshared_s -lXinerama -lgtksuperwin -L../../../dist/bin
 -lxpcom  -L../../../dist/bin -L/usr/src/packages/BUILD/mozilla/dist/lib -lplds4
 -lplc4 -lnspr4 -lpthread -ldl  -L../../../dist/bin -lmozjs  -L/usr/lib -L/usr/X
11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm   -L/
usr/X11R6/lib -lXp -lXext -lX11 -ldl -lm
Reopening since we were only working before due to a make bug.
Status: RESOLVED → UNCONFIRMED
Resolution: INVALID → ---
The fix has been checked in.
Status: UNCONFIRMED → RESOLVED
Closed: 22 years ago22 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.3beta
verified checked in
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.