Gauche > Archives > 2024/11/30

2024/11/30 05:23:23 UTCkaki
#
うっかり変な initialize 定義したら^C連打でも返ってこない状態になっちゃいました。initialize 書くの久しぶりだったので…。
#
$ gosh
gosh$ (define-method initialize (self args) (next-method) (slot-ref self 'foo))
^C^C^C
^Z
[1]+  Stopped                 gosh
2024/11/30 05:28:57 UTCkaki
#
$ gosh
gosh$ (define-method initialize (self args) (error "foo"))
^C^C^C^C^C^C^C^CReceived too many signals before processing them.  Exitting for the emergency...
#
もうちょっと簡単にできるかと思ったけどこれだとtoo many signalsは効きますね
#
$ gosh
gosh$ (define-method initialize (self args) (slot-ref self 'foo))
^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C
^Z
[1]+  Stopped                 gosh
2024/11/30 06:11:42 UTCshiro
#
あー <top> へのメソッド定義になるからあらゆるオブジェクト作成時に呼ばれちゃうんだな。基本オブジェクトのnitializeはロックした方がいいな。
2024/11/30 07:00:00 UTCkaki
#
Testing rfc.tls ...                                              gosh(1507,0x70000b52b000) malloc: *** error for object 0x102302080: pointer being freed was not allocated
gosh(1507,0x70000b52b000) malloc: *** set a breakpoint in malloc_error_break to debug
#
0.9.15のmake checkでこけました。対応するテストはext/tls/test.{scm,log}であってますか?test poll (10)まで全部通ってるように見えます。
2024/11/30 08:51:27 UTCkaki
#
もう一回make checkしたら通りました。