If the watchdog thread is sleeping on a watchdog_item and
vm_execute_jit calls watchdog_disarm and returns before the watchdog wakes up,
then the watchdog thread will wake up and try to use the now uninitialized
item->abs_timeout.
Fix this by adding an in_use flag, and another condition variable.
watchdog_disarm now wakes the watchdog thread,
and waits till it releases the item.
Thanks to Michael Scheidell for providing feedback on this bug.
If the watchdog thread is sleeping on a watchdog_item and
vm_execute_jit calls watchdog_disarm and returns before the watchdog wakes up,
then the watchdog thread will wake up and try to use the now uninitialized
item->abs_timeout.
Fix this by adding an in_use flag, and another condition variable.
watchdog_disarm now wakes the watchdog thread,
and waits till it releases the item.
Thanks to Michael Scheidell for providing feedback on this bug.
Internal version is an LLVM 2.8 with 2 patches backported from LLVM 2.9 to fix a
crash on AVX chips.
So drop support for building with external LLVM 2.8, and add support for
building with external LLVM 2.9 instead.
Caveat:
stack smashing protection is broken on LLVM 2.9 so it is disabled
Example on Debian:
apt-get install llvm-2.9-dev
./configure --enable-llvm --with-system-llvm=/usr/bin/llvm-config-2.9
LLVM was claiming it cannot lower MEMBARRIER on chips with AVX, because
some debugging code was left behind that deactivated SSE2, even though these
chips do have SSE2.
Also regenerate the codegen tables.
Author: Nate Begeman <natebegeman@mac.com>
Date: Fri Dec 3 21:54:14 2010 +0000
Remove SSE1-4 disable when AVX is enabled. While this may be useful for development,
it completely breaks scalar fp in xmm regs when AVX is enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120843 91177308-0d34-0410-b5e6-96231b3b80d8
This fixes a crash when running clambc --debug
From: Duncan Sands <baldrick@free.fr>
Date: Sat, 20 Nov 2010 11:25:00 +0000
Subject: [PATCH] On X86, MEMBARRIER, MFENCE, SFENCE, LFENCE are not target
memory intrinsics, so don't claim they are. They are
allocated using DAG.getNode, so attempts to access
MemSDNode fields results in reading off the end of the
allocated memory. This fixes crashes with "llc -debug" due
to debug code trying to print MemSDNode fields for these
barrier nodes (since the crashes are not deterministic, use
valgrind to see this). Add some nasty checking to try to
catch this kind of thing in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119901 91177308-0d34-0410-b5e6-96231b3b80d8
Don't create a new watchdog thread everytime a bytecode is run.
Instead try to reuse a previously create watchdog thread.
Watchdog thread will idle for a max of 10s, and then exit, and new watchdog being
created as needed.
commit 481d402ab03e163e180d2650fae13704858f8d81
Author: Eric Christopher <echristo@apple.com>
Date: Fri Dec 3 07:45:22 2010 +0000
Apparently OS X 10.4 doesn't have __crashreporter_info__.
Try to fix building on the wayback machine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120801 91177308-0d34-0410-b5e6-96231b3b80d8
commit 51e57139b3fdcf6b25453fa987463b33ff8f9adc
Author: Eric Christopher <echristo@apple.com>
Date: Tue Dec 7 02:05:42 2010 +0000
Two things: Fix testcase to use extern - otherwise the link will always
succeed. Also make the testcase clearer as to what we're doing and
emit a checking notification to the log.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121101 91177308-0d34-0410-b5e6-96231b3b80d8
can't use setjmp inside a function that is not the parent.
just write and use some macros.
Otherwise the "else" from handler.Set() was never reached, which caused a unit
test to fail.