Closed Bug 1040124 Opened 10 years ago Closed 10 years ago

WebRTC signaling tests fail to build on Ubuntu 12.04LTS

Categories

(Core :: WebRTC, defect)

All
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla33

People

(Reporter: m_and_m, Assigned: m_and_m)

References

Details

Attachments

(1 file)

WebRTC signaling tests fail to build on Ubuntu 12.04TLS.  It fails to find a number of symbols:

 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_close'
 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_build_path'
 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_symbol'
 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_supported'
 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_open'
 1:03.19 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libgtk-x11-2.0.so: error: undefined reference to 'g_module_error'
 1:03.19 collect2: ld returned 1 exit status
 1:03.19 make[5]: *** [signaling_unittests] Error 1
 1:03.19 make[4]: *** [media/webrtc/signaling/test/libs] Error 2
 1:03.19 make[3]: *** [libs] Error 2
 1:03.19 make[2]: *** [default] Error 2
 1:03.19 make[1]: *** [realbuild] Error 2
 1:03.19 make: *** [build] Error 2
OS: All → Linux
Summary: WebRTC signaling tests fail to build → WebRTC signaling tests fail to build on Ubuntu 12.04LTS
Comment on attachment 8458041 [details] [diff] [review]
WebRTC Signaling tests fail to build on Ubuntu 12.04LTS

Review of attachment 8458041 [details] [diff] [review]:
-----------------------------------------------------------------

r=me but I really want glandium to weigh in on this. You can land with my review. This seems like the same issue as bug 1040025.
Attachment #8458041 - Flags: review?(ted)
Attachment #8458041 - Flags: review?(mh+mozilla)
Attachment #8458041 - Flags: review+
See bug 1040025. I don't think we should work around so easily when the problem is on Ubuntu's side. But I'll do some research.
(In reply to Mike Hommey [:glandium] from comment #4)
> See bug 1040025. I don't think we should work around so easily when the
> problem is on Ubuntu's side. But I'll do some research.

Well the problem is that this means that my builder, which is the only
thing running a bunch of these tests, doesn't work. So, either we need
a workaround I can install on Ubuntu or we need this fixed.
Or you can get Ubuntu to fix it, because this *is* a problem in Ubuntu.

$ objdump -T libgtk-x11-2.0.so.0 | grep g_module 
0000000000000000      DF *UND*	0000000000000000              g_module_close
0000000000000000      DF *UND*	0000000000000000              g_module_build_path
0000000000000000      DF *UND*	0000000000000000              g_module_symbol
0000000000000000      DF *UND*	0000000000000000              g_module_supported
0000000000000000      DF *UND*	0000000000000000              g_module_open
0000000000000000      DF *UND*	0000000000000000              g_module_error
$ readelf -d libgtk-x11-2.0.so.0 | grep gmodule

The Gtk version in precise+1 has the fix. precise-update doesn't.

The fix in Gtk is:
https://git.gnome.org/browse/gtk+/commit/gtk/Makefile.am?h=gtk-2-24&id=65ea14d42151941a2c53843b13b244f38ece3b9d

The reason given in the commit is half true. Libraries with undefined symbols need to have direct dependencies on the libraries defining those symbols, independently of what ld/gold can say when building against those libraries.

Now, to the interesting part:
- This only happens with gold, any version
- This only happens when building programs, not shared libraries
- This only happens when all of the following libraries are linked: -lgtk-x11-2.0 -lpangocairo-1.0 -lX11  -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lfreetype -lfontconfig -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0  -lXfixes -lstdc++ -lm. Remove any single one of them, and the error about gmodules symbols missing goes away. So yes, in fact, it's the addition of -lXfixes in bug 983504 that tripped us over. (for those following at home, you can reproduce with a dummy .c file with a simple main() function)
- Moving some libraries around makes the number of undefined symbol errors go down to one.

So all in all, it's a weird gold behavior happening because of a genuine bug in gtk. Two bugs in one.

Now, since adding -lgmodule-2.0 in media/webrtc/signaling/test/Makefile.in is only affecting those unit tests built there, and since I haven't found other flags that make this go away, I'm inclined to say okay, let's work around this that way, even if it's awful. Please add a comment in the makefile pointing to this comment.
Attachment #8458041 - Flags: review?(mh+mozilla) → review+
https://hg.mozilla.org/mozilla-central/rev/2b3118f75b54
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Depends on: 1054014
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: