Date: Wed, 26 Feb 2014 20:40:01 GMT From: Don Lewis <truckman@FreeBSD.org> To: gecko@FreeBSD.org Subject: Re: ports/186541: installing www/libxul fails Message-ID: <201402262040.s1QKe1H3078066@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/186541; it has been noted by GNATS. From: Don Lewis <truckman@FreeBSD.org> To: bug-followup@FreeBSD.org Cc: turutani@scphys.kyoto-u.ac.jp Subject: Re: ports/186541: installing www/libxul fails Date: Wed, 26 Feb 2014 12:34:40 -0800 (PST) I did a bunch of single stepping in gdb and found this: 0x8965ade0 in mozilla::services::_external_GetHistoryService () from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so (gdb) 0x8965ade1 in mozilla::services::_external_GetHistoryService () from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so (gdb) 0x8965ade2 in mozilla::services::_external_GetHistoryService () from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so (gdb) 0x8833308d in XRE_GetBinaryPath () from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so (gdb) Program received signal SIGILL, Illegal instruction. 0x8833308d in XRE_GetBinaryPath () from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so (gdb) If I disassemble the offending bit of code, I see this: 0x88333083 <XRE_GetBinaryPath+195>: mov %ecx,(%eax) 0x88333085 <XRE_GetBinaryPath+197>: mov (%ecx),%eax 0x88333087 <XRE_GetBinaryPath+199>: mov %ecx,(%esp) 0x8833308a <XRE_GetBinaryPath+202>: call *0x4(%eax) 0x8833308d <XRE_GetBinaryPath+205>: ud2a 0x8833308f <XRE_GetBinaryPath+207>: nop 0x88333090 <XRE_GetBinaryPath+208>: push %ebp 0x88333091 <XRE_GetBinaryPath+209>: mov %esp,%ebp 0x88333093 <XRE_GetBinaryPath+211>: push %ebx A bit of searching with google, turned up this page: <http://peeterjoot.wordpress.com/2010/05/26/a-fun-and-curious-dig-gcc-generation-of-a-ud2a-instruction-sigill/> The ud2a instruction is guaranteed invalid, hence the SIGILL. Apparently gcc will sometimes insert these on purpose if it sees some code that it doesn't like, but I'm compiling with clang. I do see a lot of complaints from clang when compiling the offending file: # /usr/bin/clang++ -o nsAppRunner.o -c -fvisibility=hidden -DUSE_GLX_TEST -DMOZ_APP_NAME='"firefox"' -DMOZ_APP_VERSION='"27.0.1"' -DOS_POSIX=1 -DOS_FREEBSD=1 -DOS_BSD=1 -DMOZ_GLUE_IN_PROGRAM -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -DNO_NSPR_10_SUPPORT -DOS_TARGET=\"FreeBSD\" -DMOZ_WIDGET_TOOLKIT=\"gtk2\" -DTARGET_XPCOM_ABI=\"x86-gcc3\" -DTARGET_OS_ABI=\"FreeBSD_x86-gcc3\" -DTOOLKIT_EM_VERSION=\"27.0.1\" -DGRE_MILESTONE=27.0.1 -DGRE_BUILDID=20140225233802 -DAPP_VERSION=27.0.1 -DAPP_I D="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" -I../../../widget/xremoteclient -I../../../ipc/chromium/src -I../../../ipc/glue -I/usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders -I../../../testing/gtest/mozilla -I../../../toolkit/xre/../profile -I../../../dom/ipc -I../../../toolkit/crashreporter -I../../../dom/base -I../../../xpcom/build -I../../../config -I../../../toolkit/xre -I. -I../../dist/include -I/usr/local/include/nspr -I/u! sr/local/include/nss -I/usr/local/include/nss/nss -I/usr/local/include -I/usr/local/include -fPIC -Qunused-arguments -isystem/usr/local/include -DLIBICONV_PLUG -I/usr/local/include -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/nsAppRunner.o.pp -Qunused-arguments -isystem/usr/local/include -DLIBICONV_PLUG -I/usr/local/include -Qunused-arguments -Wall -Wpointer-arith -Woverloaded-virtual -Werror=return-type -Wtype-limits -Wempty-body -Wsign-compare -Wno-invalid-offsetof -Wno-c++0x-exten sions -Wno-extended-offsetof -Wno-unknown-warning-option -Wno-return-type-c-linkage -Wno-mismatched-tags -O2 -pipe -march=athlon64 -DLIBICONV_PLUG -fno-strict-aliasing -DLIBICONV_PLUG -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -std=gnu++0x -pipe -DNDEBUG -DTRIMMED -fno-omit-frame-pointer -I../../../widget/gtk/compat -I/usr/local/include/gtk-unix-print-2.0 -I/usr/local/include/atk-1.0 -I/usr/local/includ! e/harfbuzz -I/usr/local/include/gtk-2.0 -I/usr/local/include/pango-1.0 -I/usr/local/include/gio-unix-2.0/ -I/usr/local/include/gdk-pixbuf-2.0 -pthread -I/usr/local/include/cairo -I/usr/local/include/glib-2.0 -I/usr/local/include/pixman-1 -I/usr/local/include/freetype2 -I/usr/local/include/libpng15 -D_THREAD_SAFE -I/usr/local/include -I/usr/local/include/dbus-1.0 -I/usr/local/include/dbus-1.0/include -I/usr/local/include/dbus-1.0 -I/usr/local/include/dbus-1.0/include -I/usr/local/include/glib-2.0 -I/usr/local/include -I/usr/local/include/harfbuzz -I/usr/local/include/pango-1. 0 -pthread -I/usr/local/include/cairo -I/usr/local/include/glib-2.0 -I/usr/local/include/pixman-1 -I/usr/local/include/freetype2 -I/usr/local/include/libpng15 -D_THREAD_SAFE -I/usr/local/include -I/usr/local/include -I/usr/local/include/freetype2 /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:198:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:204:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:210:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:216:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:222:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:228:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:234:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:21: In file included from ../../dist/include/mozilla/dom/ContentParent.h:10: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContentParent.h:9: In file included from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/ipc/ipdl/_ipdlheaders/mozilla/dom/PContent.h:12: In file included from ../../dist/include/ipc/IPCMessageUtils.h:10: In file included from ../../../ipc/chromium/src/base/process_util.h:11: In file included from ../../../ipc/chromium/src/base/basictypes.h:252: In file included from ../../dist/include/nscore.h:19: ../../dist/include/mozilla/mozalloc.h:240:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete] MOZALLOC_EXPORT_NEW MOZALLOC_INLINE ^ ../../dist/include/mozilla/mozalloc.h:44:27: note: expanded from macro 'MOZALLOC_INLINE' # define MOZALLOC_INLINE MOZ_ALWAYS_INLINE_EVEN_DEBUG ^ ../../dist/include/mozilla/Attributes.h:27:75: note: expanded from macro 'MOZ_ALWAYS_INLINE_EVEN_DEBUG' # define MOZ_ALWAYS_INLINE_EVEN_DEBUG __attribute__((always_inline)) inline ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:233: In file included from /usr/local/include/gtk-2.0/gtk/gtk.h:33: In file included from /usr/local/include/gtk-2.0/gtk/gtkaboutdialog.h:32: In file included from ../../../widget/gtk/compat/gtk/gtkdialog.h:4: In file included from /usr/local/include/gtk-2.0/gtk/gtkdialog.h:35: In file included from ../../../widget/gtk/compat/gtk/gtkwindow.h:9: In file included from /usr/local/include/gtk-2.0/gtk/gtkwindow.h:36: In file included from /usr/local/include/gtk-2.0/gtk/gtkbin.h:35: In file included from /usr/local/include/gtk-2.0/gtk/gtkcontainer.h:35: In file included from ../../../widget/gtk/compat/gtk/gtkwidget.h:12: In file included from /usr/local/include/gtk-2.0/gtk/gtkwidget.h:40: In file included from /usr/local/include/atk-1.0/atk/atk.h:53: /usr/local/include/atk-1.0/atk/atkversion.h:39:9: warning: 'ATK_MAJOR_VERSION' macro redefined #define ATK_MAJOR_VERSION (2) ^ ../../mozilla-config.h:10:9: note: previous definition is here #define ATK_MAJOR_VERSION 2 ^ In file included from /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:233: In file included from /usr/local/include/gtk-2.0/gtk/gtk.h:33: In file included from /usr/local/include/gtk-2.0/gtk/gtkaboutdialog.h:32: In file included from ../../../widget/gtk/compat/gtk/gtkdialog.h:4: In file included from /usr/local/include/gtk-2.0/gtk/gtkdialog.h:35: In file included from ../../../widget/gtk/compat/gtk/gtkwindow.h:9: In file included from /usr/local/include/gtk-2.0/gtk/gtkwindow.h:36: In file included from /usr/local/include/gtk-2.0/gtk/gtkbin.h:35: In file included from /usr/local/include/gtk-2.0/gtk/gtkcontainer.h:35: In file included from ../../../widget/gtk/compat/gtk/gtkwidget.h:12: In file included from /usr/local/include/gtk-2.0/gtk/gtkwidget.h:40: In file included from /usr/local/include/atk-1.0/atk/atk.h:53: /usr/local/include/atk-1.0/atk/atkversion.h:50:9: warning: 'ATK_MINOR_VERSION' macro redefined #define ATK_MINOR_VERSION (8) ^ ../../mozilla-config.h:11:9: note: previous definition is here #define ATK_MINOR_VERSION 8 ^ /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:4017:3: warning: 'g_slice_set_config' is deprecated [-Wdeprecated-declarations] g_slice_set_config(G_SLICE_CONFIG_ALWAYS_MALLOC, 1); ^ /usr/local/include/glib-2.0/glib/gslice.h:87:10: note: 'g_slice_set_config' declared here void g_slice_set_config (GSliceConfig ckey, gint64 value); ^ /usr/ports/www/firefox/work/mozilla-release/toolkit/xre/nsAppRunner.cpp:4019:3: warning: 'g_thread_init' is deprecated [-Wdeprecated-declarations] g_thread_init(nullptr); ^ /usr/local/include/glib-2.0/glib/deprecated/gthread.h:261:10: note: 'g_thread_init' declared here void g_thread_init (gpointer vtable); ^ 12 warnings generated. If I compile the file to assembler, this is what I see for XRE_GetBinaryPath(): .section .text.XRE_GetBinaryPath,"ax",@progbits .globl XRE_GetBinaryPath .align 16, 0x90 .type XRE_GetBinaryPath,@function XRE_GetBinaryPath: # @XRE_GetBinaryPath # BB#0: # %entry pushl %ebp movl %esp, %ebp pushl %ebx subl $8, %esp calll .L50$pb .L50$pb: popl %ebx .Ltmp92: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L50$pb), %ebx movl 8(%ebp), %eax movl 12(%ebp), %ecx movl %ecx, 4(%esp) movl %eax, (%esp) calll _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile .Ltmp93: .size XRE_GetBinaryPath, .Ltmp93-XRE_GetBinaryPath .section .text._ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile,"axG",@progbits,_ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile,comdat .hidden _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile .weak _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile .align 16, 0x90 .type _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile,@function _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile: # @_ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile # BB#0: # %entry pushl %ebp movl %esp, %ebp pushl %ebx pushl %edi pushl %esi andl $-8, %esp subl $1064, %esp # imm = 0x428 calll .L51$pb .L51$pb: popl %ebx .Ltmp94: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L51$pb), %ebx movl 8(%ebp), %eax movl $0, 1056(%esp) leal 32(%esp), %esi movl %esi, 4(%esp) movl %eax, (%esp) calll _ZN7mozilla10BinaryPath3GetEPKcPc testl %eax, %eax js .LBB51_3 # BB#1: # %if.end movl %esi, (%esp) calll strlen@PLT movl %esi, 16(%esp) movl %eax, 20(%esp) movl $1, 24(%esp) leal 1056(%esp), %eax calll _ZN13nsCOMPtr_base16begin_assignmentEv@PLT movl %eax, 8(%esp) leal 16(%esp), %esi movl %esi, (%esp) movl $1, 4(%esp) calll NS_NewNativeLocalFile@PLT movl %eax, %edi movl %esi, %eax calll _ZN19nsACString_internal8FinalizeEv@PLT testl %edi, %edi js .LBB51_3 # BB#2: # %if.end16 movl 12(%ebp), %eax movl 1056(%esp), %ecx movl %ecx, (%eax) movl (%ecx), %eax movl %ecx, (%esp) calll *4(%eax) .LBB51_3: # %cleanup ud2 .Ltmp95: .size _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile, .Ltmp95-_ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile And sure enough, the function ends with a ud2 instruction! It's not the only one in this file, either. So if this a compiler bug, why isn't everyone seeing it? I don't see the ud2 instructions when I compile with gcc, so my problem looks like it is different that the original one in this PR, so I'm going to open a PR to report my problem as a clang bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402262040.s1QKe1H3078066>