Closed Bug 972983 Opened 6 years ago Closed 6 years ago

Debug-mode Linux Firefox build failure: XPCCallContext.cpp:380: error: undefined reference to 'js::BaseProxyHandler::SET'

Categories

(Core :: XPConnect, defect, blocker)

x86_64
Linux
defect
Not set
blocker

Tracking

()

RESOLVED FIXED
mozilla30

People

(Reporter: nstewart, Unassigned)

References

Details

(Keywords: regression)

Attachments

(3 files)

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36

Steps to reproduce:

Daily debug-mode x86_64 Linux Firefox build stopped succeeding as of Feb 13, 2014 8:34:52 PM CST.
git revision b921abacaf1e89ab77677b344aee1e60a8fe79b7




Actual results:

47:04.34     INPUT("../../gfx/skia/Unified_cpp_gfx_skia16.o")
47:04.34 
47:04.34 /usr/bin/ld.gold.real: warning: hidden symbol 'pixman_add_triangles' in /media/jenkins/workspace/firefox_default_linux_debug/obj-x86_64-unknown-linux-gnu/toolkit/library/../../gfx/cairo/libpixman/src/pixman-trap.o is referenced by DSO /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libcairo.so
47:04.34 /media/jenkins/workspace/firefox_default_linux_debug/js/xpconnect/src/XPCCallContext.cpp:380: error: undefined reference to 'js::BaseProxyHandler::SET'
47:04.34 /media/jenkins/workspace/firefox_default_linux_debug/js/xpconnect/src/XPCCallContext.cpp:380: error: undefined reference to 'js::BaseProxyHandler::GET'
47:04.34 collect2: ld returned 1 exit status
47:04.34 make[5]: *** [libxul.so] Error 1
47:04.34 make[4]: *** [toolkit/library/libs] Error 2
47:04.34 make[3]: *** [libs] Error 2
47:04.34 make[2]: *** [default] Error 2
47:04.34 make[1]: *** [realbuild] Error 2
47:04.34 make: *** [build] Error 2


Expected results:

Usually this build succeeds.

.mozconf as follows:

# Firefox
ac_add_options --enable-application=browser

ac_add_options --enable-profiling
ac_add_options --enable-debug
ac_add_options --disable-optimize 
ac_add_options --enable-trace-malloc

# Treat warnings as errors in directories with FAIL_ON_WARNINGS.
# This stopped working 2012-12-04 for Ubuntu 12.04
ac_add_options --enable-warnings-as-errors

# Use ccache
ac_add_options --with-ccache=/usr/bin/ccache

# This will overwrite the default of stripping everything and keep the symbol table.
# This is useful for profiling with eideticker. See bug 788680
#STRIP_FLAGS="--strip-debug"

mk_add_options MOZ_MAKE_FLAGS="-j1"

# Enable parallel compiling
# mk_add_options MOZ_MAKE_FLAGS="-j4"
Build platform is Ubuntu 12.04 x86_64
Confirmed by cviecco (same platform Ubuntu 12.04 x86_64)
OS: Mac OS X → Linux
Hardware: x86 → x86_64
In release-mode "ac_add_options --enable-optimize" the build is fine.

- Nigel
I'm also getting this on Ubuntu 12.10 x86_64. Gcc version is:

gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Status: UNCONFIRMED → NEW
Ever confirmed: true
Severity: normal → blocker
Component: Untriaged → XPConnect
Product: Firefox → Core
(In reply to Karl Tomlinson (:karlt) from comment #6)
> Created attachment 8376920 [details] [diff] [review]
> use enum for BaseProxyHandler::Action values

Hm, does this really work? I think I tried that, and had to ditch it because you can't OR enum values or something. Can you run your patch through try -b do -p all -u none -t none? r=me if that's green, but I suspect it isn't.
(In reply to Bobby Holley (:bholley) from comment #7)
> Hm, does this really work? I think I tried that, and had to ditch it because
> you can't OR enum values or something.

You can't OR strongly typed (MOZ_ENUM_TYPE(Action)) enums because they won't be implicitly converted to another type, but plain old enums are implicitly converted, to int I think in this case, before the bitwise operation.

> Can you run your patch through try -b
> do -p all -u none -t none? r=me if that's green, but I suspect it isn't.

Thanks.  I'll put it through try, with some tests, when I have some more things to test.
Hi Bobby and Karl,
I have the same build error on ubuntu 12.04 64bit.
If we have OR operation concern, I suggest to use the original code.
I just define these variable in cpp file. This patch works for me.

--
The static member need to be "defined" outside of the class declaration.
Attachment #8376954 - Flags: review?(bobbyholley)
Some build results, but need to another of my patches killed the NT builds.

https://tbpl.mozilla.org/?tree=Try&rev=155dfdec56b7
https://tbpl.mozilla.org/?tree=Try&rev=a1f12431121d

(In reply to Karl Tomlinson (:karlt) from comment #8)
> strongly typed (MOZ_ENUM_TYPE(Action)) enums

Actually MOZ_ENUM_TYPE() is not strongly typed, but the underlying type.
MOZ_BEGIN_ENUM_CLASS is the strongly typed form.
Comment on attachment 8376920 [details] [diff] [review]
use enum for BaseProxyHandler::Action values

r=me on this if it does the trick.
Attachment #8376920 - Flags: review?(bobbyholley) → review+
Comment on attachment 8376954 [details] [diff] [review]
js_BaseProxyHandler_build_error.patch

I think the other patch is probably the way to go, assuming it works.
Attachment #8376954 - Flags: review?(bobbyholley)
https://hg.mozilla.org/mozilla-central/rev/2dd72beeb8f2
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Confirming that the build is now succeeding again on Ubuntu 12.04.
As of git revision e0a06f0abb7d8baa0d649228ea367cf7a1f726cd.
Thanks, all!

- Nigel
You need to log in before you can comment on or make changes to this bug.