bin/187103: clang 3.4 miscompiles nsAppRunner.cpp from firefox firefox-27.0.1, 1 in i386
Don Lewis
truckman at FreeBSD.org
Thu Feb 27 00:20:00 UTC 2014
>Number: 187103
>Category: bin
>Synopsis: clang 3.4 miscompiles nsAppRunner.cpp from firefox firefox-27.0.1,1 in i386
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Feb 27 00:20:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator: Don Lewis
>Release: FreeBSD 11.0-CURRENT i386
>Organization:
FreeBSD project
>Environment:
System: FreeBSD scratch.catspoiler.org 11.0-CURRENT FreeBSD 11.0-CURRENT #70 r262340M: Sat Feb 22 15:58:39 PST 2014 dl at scratch.catspoiler.org:/usr/obj/usr/src/sys/GENERICSMB i386
FreeBSD clang version 3.4 (tags/RELEASE_34/final 197956) 20140216
Target: i386-unknown-freebsd11.0
Thread model: posix
Ports tree revision 345674.
>Description:
I ran into a problem when I tried to update www/firefox. Building
the port succeeded, but it failed during the install phase.
Executing /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/xpcshell -g /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/ -a /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/ -f ../../../toolkit/mozapps/installer/precompile_cache.js -e precompile_startupcache("resource://gre/");
Traceback (most recent call last):
File "../../../toolkit/mozapps/installer/packager.py", line 375, in <module>
main()
File "../../../toolkit/mozapps/installer/packager.py", line 367, in main
args.source, gre_path, base)
File "../../../toolkit/mozapps/installer/packager.py", line 148, in precompile_cache
errors.fatal('Error while running startup cache precompilation')
File "/usr/ports/www/firefox/work/mozilla-release/python/mozbuild/mozpack/errors.py", line 101, in fatal
self._handle(self.FATAL, msg)
File "/usr/ports/www/firefox/work/mozilla-release/python/mozbuild/mozpack/errors.py", line 96, in _handle
raise ErrorMessage(msg)
mozpack.errors.ErrorMessage: Error: Error while running startup cache precompilation
gmake[4]: *** [stage-package] Error 1
I duplicated the runtime environment and ran xpcshell on its own to debug
the problem and found that it core dumped.
env MOZ_STARTUP_CACHE=/tmp/cache.zip LD_LIBRARY_PATH=/usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/ /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/xpcshell -g /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/ -a /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin/ -f ../../../toolkit/mozapps/installer/precompile_cache.js -e 'precompile_startupcache("resource://gre/");'
Illegal instruction (core dumped)
I got this stack backtrace in gdb:
(gdb) bt
#0 0x8833308d in XRE_GetBinaryPath ()
from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so
#1 0x88332fe5 in XRE_GetBinaryPath ()
from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so
#2 0x88e20515 in XRE_XPCShellMain ()
from /usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0/dist/bin//libxul.so
#3 0x0804a5ba in _start ()
#4 0x00000009 in ?? ()
#5 0xbfbfd9bc in ?? ()
#6 0xbfbfd9e4 in ?? ()
#7 0xbfbfd9e4 in ?? ()
#8 0xbfbfd9b8 in ?? ()
#9 0x00000000 in ?? ()
I then single-stepped through the code and found that it was trying to
execute an illegal instruction:
x8965ade0 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)
The fact that the problem is an actual illegal instruction and not a jump
to nonsense is confirmed by disassembling the code:
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
Compilation the file results in a lot of warnings:
# /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.
I then compiled the offending source file to assembly language using
the all the same command line flags. The presence of the illegal
instruction is confirmed. Here is the offending function:
If I compile the file to assembler, this is what I see for
XRE_GetBinaryPath():
.section .text.XRE_GetBinaryPath,"ax", at progbits
.globl XRE_GetBinaryPath
.align 16, 0x90
.type XRE_GetBinaryPath, at 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", at progbits,_ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile,comdat
.hidden _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile
.weak _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile
.align 16, 0x90
.type _ZN7mozilla10BinaryPath7GetFileEPKcPP7nsIFile, at 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 at PLT
movl %esi, 16(%esp)
movl %eax, 20(%esp)
movl $1, 24(%esp)
leal 1056(%esp), %eax
calll _ZN13nsCOMPtr_base16begin_assignmentEv at PLT
movl %eax, 8(%esp)
leal 16(%esp), %esi
movl %esi, (%esp)
movl $1, 4(%esp)
calll NS_NewNativeLocalFile at PLT
movl %eax, %edi
movl %esi, %eax
calll _ZN19nsACString_internal8FinalizeEv at 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
The this is not the only function in this file with the problem. There
are a total of 14 ud2 instructions in the assembly code output.
>How-To-Repeat:
Attempt to build and install www/firefox on i386 with clang 3.4.
Then recompile nsAppRunner.cpp in the
/usr/ports/www/firefox/work/mozilla-release/obj-i386-portbld-freebsd11.0
directory with the command line abovel, but just generate assembly
language output. Look for ud2 instructions in the output.
I've attempted to generate a smaller test case, but haven't had success so
far.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list