From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Linas Vepstas Newsgroups: gmane.lisp.guile.bugs Subject: bug#25238: guile-2.2 threading bug Date: Tue, 20 Dec 2016 14:13:44 -0600 Message-ID: Reply-To: linasvepstas@gmail.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: blaine.gmane.org 1482264918 2798 195.159.176.226 (20 Dec 2016 20:15:18 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 20 Dec 2016 20:15:18 +0000 (UTC) To: 25238@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Tue Dec 20 21:15:14 2016 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cJQoZ-0008Ac-70 for guile-bugs@m.gmane.org; Tue, 20 Dec 2016 21:15:11 +0100 Original-Received: from localhost ([::1]:53320 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cJQod-0006J1-N8 for guile-bugs@m.gmane.org; Tue, 20 Dec 2016 15:15:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48071) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cJQoU-0006GB-Nz for bug-guile@gnu.org; Tue, 20 Dec 2016 15:15:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cJQoQ-000686-KT for bug-guile@gnu.org; Tue, 20 Dec 2016 15:15:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:33954) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cJQoQ-00067z-Gp for bug-guile@gnu.org; Tue, 20 Dec 2016 15:15:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cJQoQ-0003aa-9q for bug-guile@gnu.org; Tue, 20 Dec 2016 15:15:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Linas Vepstas Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 20 Dec 2016 20:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 25238 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.148226485713708 (code B ref -1); Tue, 20 Dec 2016 20:15:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Dec 2016 20:14:17 +0000 Original-Received: from localhost ([127.0.0.1]:49353 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cJQnh-0003Z2-Jv for submit@debbugs.gnu.org; Tue, 20 Dec 2016 15:14:17 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:56776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cJQnf-0003Yn-R8 for submit@debbugs.gnu.org; Tue, 20 Dec 2016 15:14:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cJQnZ-0005mk-Hy for submit@debbugs.gnu.org; Tue, 20 Dec 2016 15:14:10 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:38964) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cJQnZ-0005mg-Ei for submit@debbugs.gnu.org; Tue, 20 Dec 2016 15:14:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47744) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cJQnY-00066u-CK for bug-guile@gnu.org; Tue, 20 Dec 2016 15:14:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cJQnX-0005lk-0y for bug-guile@gnu.org; Tue, 20 Dec 2016 15:14:08 -0500 Original-Received: from mail-qt0-x235.google.com ([2607:f8b0:400d:c0d::235]:35056) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cJQnW-0005l5-SW for bug-guile@gnu.org; Tue, 20 Dec 2016 15:14:06 -0500 Original-Received: by mail-qt0-x235.google.com with SMTP id c47so187482214qtc.2 for ; Tue, 20 Dec 2016 12:14:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:reply-to:from:date:message-id:subject:to; bh=KpYtBOXqy2PHxtnzajg9QtlXoPNBLPgiiaVGLDgaQL0=; b=rXtzLswpizxoOPloXWrAj3nHqQtgjzzWUZ2/LUIg6dSshhbiWWyMwYnlO4t5xsHnt4 I+EZo2mLHt9ULSQf6UzImJFhW7qtOkb0Y8tgVYo2iTzFrOnhu9SdnixeK273UPbGQlT1 17w98wJekB6RNOUGmN3lhcAJQ/0h1oyZlwuGu3w3ZgSaTCWPm646QFWqXQzF0Dq5whQG SURJAgWxxnze/NJaEDP7QhiAhEmA1vj1RaTpmPMYXI66smteb8ZEn+b5hGhoUwbq/XUT gis2ND9C8eanodJG1Yv++FlOjigUnDsTzE3LepKB85CN7ZPzokqSnHPAeDX2ExN14pfC /tNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:from:date:message-id :subject:to; bh=KpYtBOXqy2PHxtnzajg9QtlXoPNBLPgiiaVGLDgaQL0=; b=I8Wn2TERs7E1rHb6OIciohlC5dy5KTqtirut85sAVWaKe8+1/FFtj64CrZ3xUA1HMu 2xwlmgDWbA1uHrZAVQDfyEeaOLeSsSWRZ+s6TnkAlWJvWxiG6pfHFF4MHNOqXFiWx9kO ZjMlhvZI0jOJKUT6IsU8kFItmPNwkIgDgdkgIa43M7rR6gjDn67pTyvge31ODOPgHQuz 0xey+AngIh8xj0zg3xNuUZosFCnsDEMCCK23DMqskq3wkSI/s96UqVmQ/cU4LLPv0dZT yB6wJLDqgGelvFA4fVbjz9KcwD8QRhcgYtY1B0ygXE60ktWGE+HZyD7h3VX66KmxhO4j rzhg== X-Gm-Message-State: AIkVDXLWmUN2lEaluHI2VbO0LJIoeKM2wsCOJDrW4fYGyPuK13Jz9/yWiXVSxatpJJVqooSJBxWd8qx4oBVUkg== X-Received: by 10.200.40.179 with SMTP id i48mr1399879qti.42.1482264844790; Tue, 20 Dec 2016 12:14:04 -0800 (PST) Original-Received: by 10.12.148.215 with HTTP; Tue, 20 Dec 2016 12:13:44 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:8481 Archived-At: Merry Christmas! A guile-git threading bug! -- linas $ cat fail.cc // // fail.cc // // This C++ program crashes, when compiled against todays (20 Dec 2016) // guile-2.2 from git. git log says a recent commit is // 0ce8a9a5e01d3a12d83fea85968e1abb602c9298 // but I beielve any guile-2.2 version from late 2016 will crash. // // I built this as: // cc fail.cc -I /usr/local/include/guile/2.2 -lguile-2.2 -lpthread -lstdc++ // // gdb gives the following stack trace: /***** Thread 7 "a.out" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff3306700 (LWP 23578)] 0x00007ffff7b03076 in is_dynamic_state (x=0x0) at ../../libguile/fluids.c:97 97 return SCM_HAS_TYP7 (x, scm_tc7_dynamic_state); (gdb) bt #0 0x00007ffff7b03076 in is_dynamic_state (x=0x0) at ../../libguile/fluids.c:97 #1 scm_set_current_dynamic_state (state=state@entry=0x0) at ../../libguile/fluids.c:496 #2 0x00007ffff7b6351a in guilify_self_2 (dynamic_state=dynamic_state@entry=0x0) at ../../libguile/threads.c:466 #3 0x00007ffff7b63e0c in scm_i_init_thread_for_guile (base=0x7ffff3305df0, dynamic_state=0x0) at ../../libguile/threads.c:595 #4 0x00007ffff7b63e59 in with_guile (base=base@entry=0x7ffff3305df0, data=data@entry=0x7ffff3305e20) at ../../libguile/threads.c:638 #5 0x00007ffff6c15812 in GC_call_with_stack_base ( fn=fn@entry=0x7ffff7b63e40 , arg=arg@entry=0x7ffff3305e20) at misc.c:1925 #6 0x00007ffff7b641f8 in scm_i_with_guile (dynamic_state=, data=, func=) at ../../libguile/threads.c:688 #7 scm_with_guile (func=, data=) at ../../libguile/threads.c:694 #8 0x0000555555555064 in foo(int) () #9 0x0000555555556776 in void std::_Bind_simple::_M_invoke<0ul>(std::_Index_tuple<0ul>) () #10 0x00005555555566c9 in std::_Bind_simple::operator()() () #11 0x00005555555566a8 in std::thread::_State_impl >::_M_run() () #12 0x00007ffff75cccdf in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #13 0x00007ffff789b464 in start_thread (arg=0x7ffff3306700) at pthread_create.c:333 #14 0x00007ffff70469df in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105 (gdb) ****/ #include #include #include void * wrap_foo(void *p) { scm_c_eval_string ("(setlocale LC_ALL \"\")"); } static volatile bool hold = true; void foo(int thread_id) { while (hold) {} // spin // A long sleep here avoids the crash // usleep(thread_id * 100000); scm_with_guile(wrap_foo, nullptr); } main() { int n_threads = 12; std::vector thread_pool; for (int i=0; i < n_threads; i++) thread_pool.push_back(std::thread(&foo, i)); printf("Done creating %d threads\n", n_threads); hold = false; for (std::thread& t : thread_pool) t.join(); printf("Done joining %d threads\n", n_threads); }