Gauche > Archives > 2019/12/18

2019/12/18 05:21:01 UTCaharisu
#
こんにちは。aharisuと申します。
Gauche-0.9.9になってから、外部のライブラリが作成したスレッドでGaucheのスクリプトを動作させようとすると、
Collecting from unknown thread
Aborted (core dumped)
と出力して終了してしまいます。
どなたか思い当たることはありませんか?

OSはUbuntuでgosh -Vの結果は以下の通りです。
Gauche scheme shell, version 0.9.9 [utf-8,pthreads], x86_64-pc-linux-gnu
(version "0.9.9")
(command "gosh")
(scheme-id gauche)
(language scheme r5rs r7rs)
(website "https://practical-scheme.net/gauche")
(platform "x86_64-pc-linux-gnu")
2019/12/18 07:59:25 UTCshiro
#
それgcからのメッセージですね… gcは全てのスレッドを知る必要があるのでpthread系の関数をいつくか#defineで置き換えているんですが ( gc/include/gc_pthread_redirects.h )、外部ライブラリはコンパイル時にgc.hやgauche.hをincludeしていますか?
2019/12/18 08:07:56 UTCaharisu
#
具体的にはSDL1.2をラップするGauch拡張ライブラリでの動作なのですが、スレッドを起動しているのはSDL側なのでGCが置き換えているpthread系の関数の呼び出しはできていません。
2019/12/18 08:12:29 UTCshiro
#
む、すると今まで動いていたのはなぜだろう。外部生成スレッド内でgcからのアロケーションをしてなければ大丈夫なはずですが
2019/12/18 08:14:42 UTCaharisu
#
Gauche-0.9.8までで動作することは確認できています。(もしかしたらたまたまかもしれませんが…)
2019/12/18 08:15:48 UTCshiro
#
ただgcまわりは今回特にいじってないはずなんですよね。
2019/12/18 08:18:17 UTCaharisu
#
そうなんですね。どの時点のコミットで動作が変わってしまったかもう少し突っ込んで調査してみます。
2019/12/18 08:27:25 UTCshiro
#
可能性としては、SDLからコールバックされる関数がGaucheの何かを呼んでて、それが今まではアロケートしてなかったんだけど今回アロケートするようになった、とかかなあ
2019/12/18 09:53:49 UTCaharisu
#
なぜかうまく行くようになったので報告です。
どの時点でエラーが発生するようになったか確認するためにRelease0_9_8からRelease0_9_9まで大きめの変更点にgit checkoutしながら試したのですが、
Release0_9_9にたどり着いてもエラーが起きなくなってしまいました。
#
そもそも最初エラーが発生した状況を再現できるかを試してみます。