[gambit-list] SMP Gambit

Marc Feeley feeley at iro.umontreal.ca
Sun Jan 29 11:38:37 EST 2017


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 at 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 at 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 at 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
>> 
> 




More information about the Gambit-list mailing list