Here's an idea for debugging this on your end. Use the --enable-debug-c-backtrace and --enable-debug-ctrl-flow-history configure options to generate a C backtrace when the Scheme program crashes. So rebuild Gambit with:
make clean ./configure --enable-single-host --enable-multiple-threaded-vms --enable-debug-c-backtrace --enable-debug-ctrl-flow-history make
Then run the unit tests, and when it hangs, send a termination signal to the hanging Scheme process:
kill -s SIGTERM <process_id>
You should get on stdout the C backtrace (which might be more informative without the --enable-single-host) and at the tail of gambit.log you will have the most recent control-flow history of each processor (the last entries of each processor is where each processor was executing when the termination signal was received).
Marc
On Jan 29, 2017, at 11:18 AM, Marc Feeley feeley@iro.umontreal.ca wrote:
OK… on the smaller machine (which actually has 24 processors), after *many* “make ut” I finally see a deadlock of some sort, so I will investigate. It seems to coincide with starting to do something else on the machine (like typing in emacs) but not consistently. It takes several hundred “make ut” to get a deadlock. The CPUs are “Intel(R) Xeon(R) X5650 @ 2.67GHz”.
Can you reproduce the issue more consistently on your machine? Does it happen every second or so “make ut”?
Marc
On Jan 29, 2017, at 10:54 AM, Marc Feeley feeley@iro.umontreal.ca wrote:
I’ve now tried “make ut” several times on two different linux SMP machines (one with 12 cores and the other 64 cores), and can’t reproduce the issue…
Maybe it is a race condition that becomes more of an issue due to the fast clock of your CPU, or perhaps a difference in memory consistency model.
Marc
On Jan 28, 2017, at 11:11 PM, Bradley Lucier lucier@math.purdue.edu wrote:
On 01/28/2017 11:10 PM, Marc Feeley wrote:
Would be good if you could narrow it down some more…
I couldn’t reproduce that on the linux machine I have. What are the specs of yours?
It's running Ubuntu 16.10, processor
model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
so four cores with eight threads, compiled with the shipping gcc:
firefly:~/WWW/615-2016/software> gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 6.2.0-5ubuntu12' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)
I believe I followed your instructions.
Brad