WebKit uses SSE XMM and breaks on XO-1

James Cameron quozl at laptop.org
Sat Aug 23 02:05:35 EDT 2014

With recent changes to Google Search JavaScript, searching terminates
Browse with a SIGSEGV, in WTF::dtoa.


This is only seen on an XO-1, in 13.2.1, 13.2.0, all the way back to
12.1.0.  It is not seen on more recent XO laptops.

On Fedora 20, with Sugar 0.102, and Browse-156, on kernel 3.10, does
similar, but the failure is SIGILL.  Using gdb we find the failing
instructions are references to XMM registers:

   0xabeda509:  mov    0x4(%eax),%ebx
   0xabeda50c:  cmp    -0x8(%ebx),%ecx
   0xabeda50f:  jae    0xabedbcde
=> 0xabeda515:  movsd  (%ebx,%ecx,8),%xmm0    <=
   0xabeda51a:  ucomisd %xmm0,%xmm0
   0xabeda51e:  jp     0xabedbcde
   0xabeda524:  movd   %xmm0,%eax

The XO-1 with AMD Geode processor does not have these registers, so
the SIGILL is valid.

So it would seem one way to fix this may be to rebuild WebKit without
this instruction stream.

But first, I want to make sure I can rebuild WebKit.  I've tried on a
Fedora 20 system to do this:

yumdownloader --source webkitgtk3
rpmrebuild --rebuild webkitgtk3-1.10.2-3.fc18.src.rpm

But it fails with this:

libtool: link: gcc -o /root/rpmbuild/BUILD/webkitgtk-1.10.2/tmp-introspectHnbXap/.libs/WebKit-3.0 -O2 -g1 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DLIBSOUP_I_HAVE_READ_BUG_594377_AND_KNOW_SOUP_PASSWORD_MANAGER_MIGHT_GO_AWAY -O2 -Wl,-z -Wl,relro /root/rpmbuild/BUILD/webkitgtk-1.10.2/tmp-introspectHnbXap/WebKit-3.0.o -Wl,--export-dynamic -pthread -Wl,--export-dynamic  -L. /root/rpmbuild/BUILD/webkitgtk-1.10.2/.libs/libwebkitgtk-3.0.so /root/rpmbuild/BUILD/webkitgtk-1.10.2/.libs/libjavascriptcoregtk-3.0.so -lgmodule-2.0 -lrt -lgtk-3 -lgdk-3 -latk-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -pthread
/lib/libGL.so.1: undefined reference to `_glapi_tls_Dispatch'
/lib/libEGL.so.1: undefined reference to `wl_display_dispatch_queue_pending'
collect2: error: ld returned 1 exit status
linking of temporary binary failed: Command '['./doltlibtool', '--mode=link', '--tag=CC', 'gcc', '-o', '/root/rpmbuild/BUILD/webkitgtk-1.10.2/tmp-introspectHnbXap/WebKit-3.0', '-export-dynamic', '-O2', '-g1', '-pipe', '-Wall', '-Wp,-D_FORTIFY_SOURCE=2', '-fexceptions', '-fstack-protector', '--param=ssp-buffer-size=4', '-m32', '-march=i686', '-mtune=atom', '-fasynchronous-unwind-tables', '-DLIBSOUP_I_HAVE_READ_BUG_594377_AND_KNOW_SOUP_PASSWORD_MANAGER_MIGHT_GO_AWAY', '-O2', '-Wl,-z,relro', '/root/rpmbuild/BUILD/webkitgtk-1.10.2/tmp-introspectHnbXap/WebKit-3.0.o', '-L.', '-lwebkitgtk-3.0', '-ljavascriptcoregtk-3.0', '-Wl,--export-dynamic', '-pthread', '-lgmodule-2.0', '-lrt', '-lgtk-3', '-lgdk-3', '-latk-1.0', '-lpangocairo-1.0', '-lgdk_pixbuf-2.0', '-lcairo-gobject', '-lpango-1.0', '-lcairo', '-lsoup-2.4', '-lgio-2.0', '-lgobject-2.0', '-lglib-2.0']' returned non-zero exit status 1
make[1]: *** [WebKit-3.0.gir] Error 1
make[1]: Leaving directory `/root/rpmbuild/BUILD/webkitgtk-1.10.2'
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.vGFtGZ (%build)

James Cameron

More information about the Devel mailing list