From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Wilhelm Schuster Newsgroups: gmane.lisp.guile.bugs Subject: bug#21587: Mac: Segfault when unloading shared object linked to libguile Date: Tue, 29 Sep 2015 20:21:29 +0200 Message-ID: <986070ee429f12db07fc88613be335a5@wilhelm.re> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_6cfeeeaa066e86137a38259b0467ea69" X-Trace: ger.gmane.org 1443693494 31611 80.91.229.3 (1 Oct 2015 09:58:14 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 1 Oct 2015 09:58:14 +0000 (UTC) To: 21587@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Thu Oct 01 11:58:04 2015 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Zhack-0001LP-2y for guile-bugs@m.gmane.org; Thu, 01 Oct 2015 11:58:02 +0200 Original-Received: from localhost ([::1]:47489 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zhacj-0004Te-MO for guile-bugs@m.gmane.org; Thu, 01 Oct 2015 05:58:01 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zh0lu-0008Rd-0A for bug-guile@gnu.org; Tue, 29 Sep 2015 15:41:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zh0ls-0001GY-Oz for bug-guile@gnu.org; Tue, 29 Sep 2015 15:41:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:59249) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zh0ls-0001GT-Fx for bug-guile@gnu.org; Tue, 29 Sep 2015 15:41:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Zh0ls-00008u-BP for bug-guile@gnu.org; Tue, 29 Sep 2015 15:41:04 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Wilhelm Schuster Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 29 Sep 2015 19:41:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 21587 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.1443555636492 (code B ref -1); Tue, 29 Sep 2015 19:41:04 +0000 Original-Received: (at submit) by debbugs.gnu.org; 29 Sep 2015 19:40:36 +0000 Original-Received: from localhost ([127.0.0.1]:48218 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Zh0lP-00007r-BM for submit@debbugs.gnu.org; Tue, 29 Sep 2015 15:40:36 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:58917) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Zgzws-0007Jm-45 for submit@debbugs.gnu.org; Tue, 29 Sep 2015 14:48:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zgzwq-0006Ro-Jn for submit@debbugs.gnu.org; Tue, 29 Sep 2015 14:48:21 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:39594) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zgzwq-0006Rk-HF for submit@debbugs.gnu.org; Tue, 29 Sep 2015 14:48:20 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40669) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zgzwl-0004aq-Ih for bug-guile@gnu.org; Tue, 29 Sep 2015 14:48:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zgzwh-0006Op-Ar for bug-guile@gnu.org; Tue, 29 Sep 2015 14:48:15 -0400 Original-Received: from wilhelm.re ([2a00:d880:5:2c4::42]:55083) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zgzwh-0006OR-1l for bug-guile@gnu.org; Tue, 29 Sep 2015 14:48:11 -0400 Original-Received: from wilhelm.re (localhost.localdomain [127.0.0.1]) by wilhelm.re (OpenSMTPD) with ESMTP id 7e0e160e for ; Tue, 29 Sep 2015 18:21:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=wilhelm.re; h=mime-version :content-type:date:from:to:subject:message-id; s=dkim1; bh=J99/0 UBtayUHu3OJn2XPehZiQW0=; b=CvrVXTwioAsPEyUWC3O6hEMuxlIBOyifeClpo QtvosIxB5Gx91aCFJuO4G6TMfbbBeTynU0+vGBl9w5FDn2yf8GLYPy3ILH9Iv4DG +SQ5HyXyh4RM5UoHFYoaJa7Mqik9RgwJsJbAqb2q9Jilcs6MYuVAdZVaZBRs7Tb2 b4boT2/VKFO5cfobcA6GceF6xuA+kDg4AS7e8ROMdyYb12W0bt/FZWOU944/huDW QIUSbv9sp3A4iezmhT+NQK5KVpxa/5a0kL1Twm9quXOPBOyvryzcyZvfqWeBxR/9 dO1Q5nXjHNib4Gf8QYj3WUJM9av9m1Vk2hSphE8jfoyiQ5DUg== Original-Received: by wilhelm.re (OpenSMTPD) with ESMTPSA id b28ea3b7 TLS version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-SHA bits=128 verify=NO for ; Tue, 29 Sep 2015 18:21:29 +0000 (UTC) X-Sender: wilhelm@wilhelm.re User-Agent: Roundcube Webmail/1.1.2 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Mailman-Approved-At: Tue, 29 Sep 2015 15:40:33 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 208.118.235.43 X-Mailman-Approved-At: Thu, 01 Oct 2015 02:02:02 -0400 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-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:7857 Archived-At: --=_6cfeeeaa066e86137a38259b0467ea69 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, I have a rather weird issue with guile on OSX Yosemite (10.10.5). The problem originally stems from weechat [1] which provides guile scripting through a dynamically loaded "plugin" (shared object). However, I was able to extract the problem into a smaller test program. The basic run down: When I try to unload (using dlclose() ) a shared object that is linked to libguile after calling scm_init_guile() OR scm_with_guile(), a Segfault is triggered. Here is my test case: $ cat test.c #include #include typedef int (*guile_func)(void); int main (void) { void *guile = NULL; guile_func init_func = NULL; printf("Loading Guile... "); guile = dlopen("guile.so", RTLD_GLOBAL | RTLD_NOW); if (!guile) printf("Error!\n"); else printf("Done!\n"); printf("Trying to load \"init_guile\" "); init_func = dlsym(guile, "init_guile"); if (!init_func) printf("Error!\n"); else { printf("Done!\n"); printf("Trying to run \"init_guile\"\n"); init_func(); } printf("Unloading Guile... "); fflush(stdout); dlclose(guile); printf("Done!\n"); } $ cat guile.c #include extern void init_guile(void); void init_guile(void) { scm_init_guile(); } When I compile and run the program I get the following output: $ clang -g -shared -o guile.so guile.c $(pkg-config --cflags --libs guile-2.0) $ clang -g test.c -o test $ ./test Loading Guile... Done! Trying to load "init_guile" Done! Trying to run "init_guile" Unloading Guile... [1] 41550 segmentation fault ./test The expected output: Loading Guile... Done! Trying to load "init_guile" Done! Trying to run "init_guile" Unloading Guile... Done! Here's an excerpt from the output when enabling dyld (dynamic linker) debugging information: $ DYLD_PRINT_APIS=1 ./test [...] dlopen(guile.so) ==> 0x7fbcc8e00000 Loading Guile... Done! dlsym(0x7fbcc8e00000, init_guile) Trying to load "init_guile" Done! Trying to run "init_guile" [...] Unloading Guile... dlclose(0x7fbcc8e00000) dlclose(), found unused image 0x7fbcc8e00000 guile.so dlclose(), found unused image 0x7fbcc8c00170 libguile-2.0.22.dylib dlclose(), found unused image 0x7fbcc8d04930 libgc.1.dylib dlclose(), found unused image 0x7fbcc8e00140 libffi.6.dylib dlclose(), found unused image 0x7fbcc8f00000 libunistring.2.dylib dlclose(), found unused image 0x7fbcc8f00130 libgmp.10.dylib dlclose(), found unused image 0x7fbcc8e001d0 libltdl.7.dylib dlclose(), deleting 0x7fbcc8e00000 guile.so dlclose(), deleting 0x7fbcc8c00170 libguile-2.0.22.dylib dlclose(), deleting 0x7fbcc8d04930 libgc.1.dylib dlclose(), deleting 0x7fbcc8e00140 libffi.6.dylib [1] 41585 segmentation fault DYLD_PRINT_APIS=1 ./test I have attached a lldb debugging session with backtrace. Cheers, Wilhelm Schuster. --=_6cfeeeaa066e86137a38259b0467ea69 Content-Transfer-Encoding: base64 Content-Type: text/plain; name=lldb.log Content-Disposition: attachment; filename=lldb.log; size=1062 JCBsbGRiIC4vdGVzdAoobGxkYikgdGFyZ2V0IGNyZWF0ZSAiLi90ZXN0IgpDdXJyZW50IGV4ZWN1 dGFibGUgc2V0IHRvICcuL3Rlc3QnICh4ODZfNjQpLgoobGxkYikgcnVuClByb2Nlc3MgNDE2MDcg bGF1bmNoZWQ6ICcuL3Rlc3QnICh4ODZfNjQpCkxvYWRpbmcgR3VpbGUuLi4gRG9uZSEKVHJ5aW5n IHRvIGxvYWQgImluaXRfZ3VpbGUiIERvbmUhClRyeWluZyB0byBydW4gImluaXRfZ3VpbGUiClVu bG9hZGluZyBHdWlsZS4uLiBQcm9jZXNzIDQxNjA3IHN0b3BwZWQKKiB0aHJlYWQgIzE6IHRpZCA9 IDB4MjNlNDBkLCAweDAwMDAwMDAxMDAwM2ViNzAsIHF1ZXVlID0gJ2NvbS5hcHBsZS5tYWluLXRo cmVhZCcsIHN0b3AgcmVhc29uID0gRVhDX0JBRF9BQ0NFU1MgKGNvZGU9MSwgYWRkcmVzcz0weDEw MDAzZWI3MCkKICAgIGZyYW1lICMwOiAweDAwMDAwMDAxMDAwM2ViNzAKZXJyb3I6IG1lbW9yeSBy ZWFkIGZhaWxlZCBmb3IgMHgxMDAwM2VhMDAKKGxsZGIpIHRocmVhZCBiYWNrdHJhY2UgMQoqIHRo cmVhZCAjMTogdGlkID0gMHgyM2U0MGQsIDB4MDAwMDAwMDEwMDAzZWI3MCwgcXVldWUgPSAnY29t LmFwcGxlLm1haW4tdGhyZWFkJywgc3RvcCByZWFzb24gPSBFWENfQkFEX0FDQ0VTUyAoY29kZT0x LCBhZGRyZXNzPTB4MTAwMDNlYjcwKQogICogZnJhbWUgIzA6IDB4MDAwMDAwMDEwMDAzZWI3MAog ICAgZnJhbWUgIzE6IDB4MDAwMDdmZmY1ZmMwMWNkMyBkeWxkYGR5bGQ6OnJlbW92ZUltYWdlKElt YWdlTG9hZGVyKikgKyAzMzgKICAgIGZyYW1lICMyOiAweDAwMDA3ZmZmNWZjMDRmYmMgZHlsZGBk eWxkOjpnYXJiYWdlQ29sbGVjdEltYWdlcygpICsgODIzCiAgICBmcmFtZSAjMzogMHgwMDAwN2Zm ZjVmYzBjM2U4IGR5bGRgZGxjbG9zZSArIDEzNAogICAgZnJhbWUgIzQ6IDB4MDAwMDdmZmY4ZjE5 NTgwOCBsaWJkeWxkLmR5bGliYGRsY2xvc2UgKyA2MQogICAgZnJhbWUgIzU6IDB4MDAwMDAwMDEw MDAwMGU5NyB0ZXN0YG1haW4gKyAyNzkgYXQgdGVzdC5jOjQ4CiAgICBmcmFtZSAjNjogMHgwMDAw N2ZmZjhmMTk2NWM5IGxpYmR5bGQuZHlsaWJgc3RhcnQgKyAx --=_6cfeeeaa066e86137a38259b0467ea69--