Closed Bug 850089 Opened 8 years ago Closed 8 years ago

SPS breakpad unwind (bug 779291) breaks --disable-crashreporter builds

Categories

(Core :: Gecko Profiler, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: jseward, Assigned: ted)

References

Details

(Keywords: regression)

Attachments

(2 files)

Carried over from bug 779291 comment 103:

Benoit Girard (:BenWa):
I tried to build from inbound but got a compile error. I think we
might of regressed '--disable-crashreporter' builds.



tools/profiler/local_debug_info_symbolizer.cc:110: error: undefined
reference to
'google_breakpad::CFIRuleParser::Parse(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'

tools/profiler/local_debug_info_symbolizer.cc:111: error: undefined
reference to 'vtable for google_breakpad::CFIFrameInfoParseHandler'

tools/profiler/local_debug_info_symbolizer.cc:35: error: undefined
reference to 'google_breakpad::Module::~Module()'

tools/profiler/local_debug_info_symbolizer.cc:38: error: undefined
reference to 'vtable for google_breakpad::StackFrameSymbolizer'

toolkit/crashreporter/google-breakpad/src/common/unique_string.h:227:
error: undefined reference to
'google_breakpad::ToUniqueString(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >)'

toolkit/crashreporter/google-breakpad/src/common/unique_string.h:234:
error: undefined reference to
'google_breakpad::ToUniqueString(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >)'

tools/profiler/local_debug_info_symbolizer.cc:143: error: undefined
reference to
'google_breakpad::Module::FindStackFrameEntryByAddress(unsigned long
long)'

tree/tools/profiler/local_debug_info_symbolizer.cc:66: error:
undefined reference to
'google_breakpad::ReadSymbolData(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&, SymbolData,
google_breakpad::Module**)'

tools/profiler/local_debug_info_symbolizer.cc:67: error: undefined
reference to
'google_breakpad::LogStream::LogStream(std::basic_ostream<char,
std::char_traits<char> >&, google_breakpad::LogStream::Severity, char
const*, int)'

tools/profiler/local_debug_info_symbolizer.cc:67: error: undefined
reference to 'google_breakpad::LogStream::~LogStream()'

tools/profiler/local_debug_info_symbolizer.cc:70: error: undefined
reference to 'google_breakpad::Module::~Module()'

tools/profiler/local_debug_info_symbolizer.cc:83: error: undefined
reference to 'google_breakpad::Module::FindFunctionByAddress(unsigned
long long)'

tools/profiler/local_debug_info_symbolizer.h:18: error: undefined
reference to
'google_breakpad::StackFrameSymbolizer::StackFrameSymbolizer(google_breakpad::SymbolSupplier*,
google_breakpad::SourceLineResolverInterface*)'

tools/profiler/UnwinderThread2.cpp:1664: error: undefined reference to
'google_breakpad::StackwalkerARM::StackwalkerARM(google_breakpad::SystemInfo
const*, MDRawContextARM const*, int, google_breakpad::MemoryRegion*,
google_breakpad::CodeModules const*,
google_breakpad::StackFrameSymbolizer*)'

toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h:59:
error: undefined reference to 'google_breakpad::CallStack::Clear()'

tools/profiler/UnwinderThread2.cpp:1678: error: undefined reference to
'google_breakpad::Stackwalker::Walk(google_breakpad::CallStack*,
std::vector<google_breakpad::CodeModule const*,
std::allocator<google_breakpad::CodeModule const*> >*)'

tools/profiler/UnwinderThread2.cpp:1760: error: undefined reference to
'google_breakpad::CallStack::~CallStack()'
I'm building SeaMonkey and am getting the following during build:

  Creating library xul.lib and object xul.exp

LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

local_debug_info_symbolizer.obj : error LNK2001: unresolved external symbol "public: virtual enum google_breakpad::StackFrameSymbolizer::SymbolizerResult __thiscall google_breakpad::StackFrameSymbolizer::FillSourceLineInfo(class google_breakpad::CodeModules const *,struct google_breakpad::SystemInfo const *,struct google_breakpad::StackFrame *)" (?FillSourceLineInfo@StackFrameSymbolizer@google_breakpad@@UAE?AW4SymbolizerResult@12@PBVCodeModules@2@PBUSystemInfo@2@PAUStackFrame@2@@Z)

local_debug_info_symbolizer.obj : error LNK2001: unresolved external symbol "public: virtual struct google_breakpad::WindowsFrameInfo * __thiscall google_breakpad::StackFrameSymbolizer::FindWindowsFrameInfo(struct google_breakpad::StackFrame const *)" (?FindWindowsFrameInfo@StackFrameSymbolizer@google_breakpad@@UAEPAUWindowsFrameInfo@2@PBUStackFrame@2@@Z)

local_debug_info_symbolizer.obj : error LNK2001: unresolved external symbol "public: virtual class google_breakpad::CFIFrameInfo * __thiscall google_breakpad::StackFrameSymbolizer::FindCFIFrameInfo(struct google_breakpad::StackFrame const *)" (?FindCFIFrameInfo@StackFrameSymbolizer@google_breakpad@@UAEPAVCFIFrameInfo@2@PBUStackFrame@2@@Z)

xul.dll : fatal error LNK1120: 3 unresolved externals

e:\mozstuff\mozprgs\sm9\mozilla\config\rules.mk:951:0: command 'e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/_virtualenv/Scripts/python.exe e:/mozstuff/mozprgs/sm9/mozilla/config/expandlibs_exec.py --depend .deps/xul.dll.pp --target xul.dll --uselist -- link -NOLOGO -DLL -OUT:xul.dll -PDB:xul.pdb -SUBSYSTEM:WINDOWS -MACHINE:X86  dlldeps-xul.obj nsStaticXULComponents.obj nsDllMain.obj nsGFXDeps.obj dlldeps-zlib.obj nsUnicharUtils.obj nsBidiUtils.obj nsSpecialCasingData.obj nsUnicodeProperties.obj nsRDFResource.obj   ./module.res -LARGEADDRESSAWARE -NXCOMPAT -DYNAMICBASE -SAFESEH  -DEBUG -DEBUGTYPE:CV -DEBUG -OPT:REF    ../../toolkit/components/osfile/osfile_s.lib ../../toolkit/xre/xulapp_s.lib  ../../staticlib/components/necko.lib ../../staticlib/components/uconv.lib ../../staticlib/components/i18n.lib ../../staticlib/components/chardet.lib ../../staticlib/components/jar50.lib ../../staticlib/components/startupcache.lib ../../staticlib/components/pref.lib ../../staticlib/components/htmlpars.lib ../../staticlib/components/identity.lib ../../staticlib/components/imglib2.lib ../../staticlib/components/mediasniffer.lib ../../staticlib/components/gkgfx.lib ../../staticlib/components/gklayout.lib ../../staticlib/components/docshell.lib ../../staticlib/components/embedcomponents.lib ../../staticlib/components/webbrwsr.lib ../../staticlib/components/nsappshell.lib ../../staticlib/components/txmgr.lib ../../staticlib/components/commandlines.lib ../../staticlib/components/toolkitcomps.lib ../../staticlib/components/pipboot.lib ../../staticlib/components/pipnss.lib ../../staticlib/components/appcomps.lib ../../staticlib/components/jsreflect.lib ../../staticlib/components/composer.lib ../../staticlib/components/telemetry.lib ../../staticlib/components/jsinspector.lib ../../staticlib/components/jsdebugger.lib ../../staticlib/components/storagecomps.lib ../../staticlib/components/rdf.lib ../../staticlib/components/windowds.lib ../../staticlib/components/jsctypes.lib ../../staticlib/components/jsperf.lib ../../staticlib/components/gkplugin.lib ../../staticlib/components/windowsproxy.lib ../../staticlib/components/jsd.lib ../../staticlib/components/autoconfig.lib ../../staticlib/components/auth.lib ../../staticlib/components/cookie.lib ../../staticlib/components/permissions.lib ../../staticlib/components/universalchardet.lib ../../staticlib/components/places.lib ../../staticlib/components/tkautocomplete.lib ../../staticlib/components/satchel.lib ../../staticlib/components/pippki.lib ../../staticlib/components/imgicon.lib ../../staticlib/components/profiler.lib ../../staticlib/components/widget_windows.lib ../../staticlib/components/accessibility.lib ../../staticlib/components/spellchecker.lib ../../staticlib/components/zipwriter.lib ../../staticlib/components/services-crypto.lib ../../staticlib/components/xpautocomplete.lib ../../staticlib/components/mail.lib ../../staticlib/components/msgsmime.lib ../../staticlib/components/import.lib ../../staticlib/components/msgMapi.lib ../../staticlib/components/mozldap.lib ../../staticlib/components/mork.lib ../../staticlib/jsipc_s.lib ../../staticlib/domipc_s.lib ../../staticlib/domplugins_s.lib ../../staticlib/mozipc_s.lib ../../staticlib/mozipdlgen_s.lib ../../staticlib/ipcshell_s.lib ../../staticlib/gfxipc_s.lib ../../staticlib/hal_s.lib ../../staticlib/dombindings_s.lib ../../staticlib/xpcom_core.lib ../../staticlib/ucvutil_s.lib ../../staticlib/chromium_s.lib ../../staticlib/snappy_s.lib ../../staticlib/thebes.lib ../../staticlib/gl.lib ../../staticlib/ycbcr.lib   e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/mozjs.lib e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/crmf.lib         e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/smime3.lib         e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/ssl3.lib         e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/nss3.lib         e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/nssutil3.lib  ../../dist/lib/nsldap32v60.lib ../../dist/lib/nsldappr32v60.lib ../../dist/lib/nsldif32v60.lib ../../dist/lib/mozsqlite3.lib  ../../dist/lib/gkmedias.lib   e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/nspr4.lib e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/plc4.lib e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/plds4.lib  ../../dist/lib/mozalloc.lib -DELAYLOAD:psapi.dll -DELAYLOAD:dbghelp.dll -DELAYLOAD:rasapi32.dll -DELAYLOAD:rasdlg.dll -DELAYLOAD:comdlg32.dll -DELAYLOAD:winspool.drv -DELAYLOAD:secur32.dll -DELAYLOAD:wininet.dll  -DELAYLOAD:oleacc.dll e:/mozstuff/mozprgs/sm9/objdir-sm/mozilla/dist/lib/mozglue.lib kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib mfuuid.lib wmcodecdspuuid.lib shell32.lib ole32.lib version.lib winspool.lib comdlg32.lib imm32.lib msimg32.lib shlwapi.lib psapi.lib ws2_32.lib dbghelp.lib rasapi32.lib rasdlg.lib iphlpapi.lib uxtheme.lib setupapi.lib secur32.lib sensorsapi.lib portabledeviceguids.lib windowscodecs.lib wininet.lib oleacc.lib delayimp.lib  usp10.lib oleaut32.lib   ' failed, return code 1120
<libs>: Found error
<xul.lib>: Found error
<../../dist/bin/xul.dll>: Found error
<libs>: Found error
<../../dist/lib/xul.lib>: Found error
<../../dist/sdk/lib/xul.lib>: Found error
<libs>: Found error
<libs>: Found error
<libs>: Found error
e:\mozstuff\mozprgs\sm9\mozilla\config\makefiles\target_libs.mk:18:0: command 'e:/mozstuff/mozilla-build/python/python.exe e:/mozstuff/mozprgs/sm9/mozilla/build/pymake/pymake/../make.py -C toolkit/library libs' failed, return code 2
e:\mozstuff\mozprgs\sm9\mozilla\config\rules.mk:654:0: command 'e:/mozstuff/mozilla-build/python/python.exe e:/mozstuff/mozprgs/sm9/mozilla/build/pymake/pymake/../make.py libs_tier_platform' failed, return code 2
e:\mozstuff\mozprgs\sm9\mozilla\config\rules.mk:619:0: command 'e:/mozstuff/mozilla-build/python/python.exe e:/mozstuff/mozprgs/sm9/mozilla/build/pymake/pymake/../make.py  tier_platform' failed, return code 2
e:\mozstuff\mozprgs\sm9\objdir-sm\Makefile:45:0: command 'e:/mozstuff/mozilla-build/python/python.exe e:/mozstuff/mozprgs/sm9/mozilla/build/pymake/pymake/../make.py -C mozilla default' failed, return code 2
e:\mozstuff\mozprgs\sm9\client.mk:346:0: command 'e:/mozstuff/mozilla-build/python/python.exe e:/mozstuff/mozprgs/sm9/mozilla/build/pymake/pymake/../make.py -j8 -C e:/mozstuff/mozprgs/sm9/objdir-sm' failed, return code 2
and yes, I have "--disable-crashreporter" in my .mozconfig.
Blocks: 779291
Keywords: regression
If I build with --disable-crashreporter, I get the reported bustage.

If I build without that flag, I get

 0:06.95 configure: error: Breakpad tools do not support compiling on Darwin while targeting Linux.  Use --disable-crashreporter.


Macs building Fennec is *what we do* for mobile dev. I suggest backing out Bug 779291 ASAP, because it just screwed a whole team. I might do this tonight, depending on how pissed off I feel.
Severity: normal → critical
(In reply to Richard Newman [:rnewman] from comment #3)
> Macs building Fennec is *what we do* for mobile dev.

(slight tangent: why don't we have any TBPL boxes in that configuration? Seems like it'd be a good idea to have a build like that on TBPL, given that it's an important developer configuration that we want to stay functional.)
(In reply to Daniel Holbert [:dholbert] from comment #4)

> (slight tangent: why don't we have any TBPL boxes in that configuration?
> Seems like it'd be a good idea to have a build like that on TBPL, given that
> it's an important developer configuration that we want to stay functional.)

Filed Bug 850136. Good point!
same issue for Qt
Duplicate of this bug: 850131
This patch does 3 things:
1) Build a few Breakpad dirs even if --disable-crashreporter
2) Within those dirs, don't build the host tools if --disable-crashreporter (which is the biggest reason people do that right now, to build Android on mac, for example)
3) Link the right libs in toolkit/xre if --disable-crashreporter

I've pushed it to try to make sure it doesn't break the normal build:
https://tbpl.mozilla.org/?tree=Try&rev=4a498e9e491f

It built fine locally on Linux64 both with and without --disable-crashreporter.
Attachment #723956 - Flags: review?(mh+mozilla)
Attachment #723956 - Flags: review?(mh+mozilla) → review+
Attached file Build error /w patch
Note this is not a clobber.
After another round of minor fixup (thanks BenWa), folded this into the original patch and re-landed that:
https://hg.mozilla.org/integration/mozilla-inbound/rev/8b366545161d
Assignee: nobody → ted
With the patch (an hour old m-c), unclobbered:
24:10.26 IOError: [Errno 2] No such file or directory: u'c:\\Mozilla\\src\\mozilla-central\\_obj-browser-debug\\toolkit\\crashreporter\\google-breakpad\\src\\processor\\host_breakpad_sps_common_s.lib'
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.