(たぶん半年くらい前の記録です)
ようやく楽しい CPU 本体がやってきた。
どこからつないだものかな。 まず 5V と GND を全部つないでおくのは前提としよう。 んで IC は配線面から見て下図のように並んでいるのだが、
PC I/O regB regA 161 161 161 161 ←隙間A (bit0-3,CK,RST) ALU selectB selectA 283 153 153 ←隙間B carry decodeNOT decode3AND 74 32 10
まずクロックとリセットは部品面でつないでしまうことにする。 この二つはほとんど隙間 A にあるのだが、 ここにはレジスタと ALU をつなぐループ回線もあるので非常に混雑している。 そこで裏表を両方使えばリード線本数を根本的に減らせるわけだ。
ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。
(ここに半年くらいのタイムラグが)
ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。
とか書いてあるのにつながってないじゃないかよ! 4 ビット分の配線が邪魔すぎる……。
いいんだよ回路さえつながってれば!
(17:33)
http://dontstopmusic.no-ip.org/diary/20040815.html#p02
新しいページを作るときにエラーになるバグを修正しました。
自分とこでは HEAD を使ってないのがバレバレだな。 こないだの大改造はそろそろ安定したはずだし、うちもアップデートするか。 → した。
いいかげん 0.3 を出すか。 よし、DS20 のパッチ当てが終わったらやろう。
(18:02)
http://i.loveruby.net/d/20040817.html#c01
日本語ページ名ですか……。うーん。
まず、なぜ日本語ページ名が実装されないかと言えば仕様が決まらないからです。 単に○○を実装すればよいと決まってればとっくに実装してます。 そこのところを御理解ください。
あと、設定で選択ってのは最後の手段にしたいです。 特にページ名は互換性がからむので、 設定を変えたらページが見えなくなる可能性があるからです。
いやそれでも自分とこだけでもなんでもいいから実装したいということならば、 bitchannelrc で実装してください。 そのときに再定義しやすいようにコードのここを変えてくれとかいう話なら できるだけ対応しましょう。
(18:28)
なんかもうわけがわからなくなってきたんだが、 いったん現状をまとめる。
発生しているエラーは Error と Failure でパターンが分かれていて、 F がこうなり
1) Failure: test_03(TestDRbSSLCore) [/usr/users/aamine/src/ruby/test/drb/drbtest.rb:132]: <ArgumentError> exception expected but was Class: <Errno::ECONNRESET> Message: <"Connection reset by peer"> ---Backtrace--- /usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close' /usr/local/lib/ruby/1.9/drb/ssl.rb:170:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:1108:in `close' /usr/local/lib/ruby/1.9/drb/drb.rb:1090:in `open' /usr/local/lib/ruby/1.9/drb/drb.rb:1014:in `method_missing' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:133:in `test_03' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `assert_raise' /usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `test_03' ---------------
E がこうなる。
5) Error: test_08_here(TestDRbSSLCore): NoMethodError: undefined method `stop_service' for nil:NilClass /usr/users/aamine/src/ruby/test/drb/drbtest.rb:72:in `teardown'
また、全テストを一度に動かすとエラー件数はこんな感じなのだが、
tunami.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev6-osf5.1b] openssl 0.9.6g #1 1495 tests, 10614 assertions, 3 failures, 37 errors #2 1495 tests, 10613 assertions, 3 failures, 37 errors openssl 0.9.7d #1 1495 tests, 10623 assertions, 4 failures, 37 errors as500.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev56-osf5.1b] openssl 0.9.6g #1 1495 tests, 10613 assertions, 1 failures, 37 errors #2 1495 tests, 10616 assertions, 0 failures, 37 errors
test_drb*.rb を一つずつバラで動かすと test_drbssl.rb だけが失敗し、 エラーの数が減る。
#1 20 tests, 34 assertions, 3 failures, 4 errors #2 20 tests, 34 assertions, 3 failures, 4 errors
また全テストを動かしたときは drb プロセスが生き残っている。
~/src/ruby/test % ps ax | grep ruby 41799 pts/1 I 0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_safe1.rb druby://tunami.loveruby.net:3172 ut_safe1.rb 41803 pts/1 I 0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_array_drbunix.rb druby://tunami.loveruby.net:3172 ut_array_drbunix.rb 41808 pts/1 I 0:00.12 ruby /usr/users/aamine/src/ruby/test/drb/ut_drb_drbunix.rb druby://tunami.loveruby.net:3172 ut_drb_drbunix.rb
ソケットもたくさん……
~/src/ruby/test % ls /tmp druby10030.0 druby10340.0 druby39894.0 druby40240.0 druby10037.0 druby25704.0 druby39906.0 druby41803.0 druby10333.0 druby25711.0 druby40233.0 druby41808.0
さらに、ログを取ろうと思ってリダイレクトすると ruby が SEGV する。
(ladebug) where >0 0x3ff800e93f8 in __kill(...) in /usr/shlib/libc.so #1 0x3ff80213190 in UnknownProcedure18FromFile10(...) in /usr/shlib/libc.so #2 0x3ff8013bfd4 in __tis_raise(...) in /usr/shlib/libc.so #3 0x3ff801c97c8 in abort(...) in /usr/shlib/libc.so #4 0x120057ee0 in rb_bug(fmt=0x1400088f8="Segmentation fault") "/usr/users/aamine/src/ruby/error.c":214 #5 0x1200a7374 in sigsegv(sig=11) "/usr/users/aamine/src/ruby/signal.c":446 #6 0x3ff800d5b40 in __sigtramp(...) in /usr/shlib/libc.so #7 0x3ff80205964 in UnknownProcedure14FromFile22(...) in /usr/shlib/libc.so #8 0x1200509f4 in obj_free(obj=5391766328) "/usr/users/aamine/src/ruby/gc.c":1153 #9 0x120050380 in gc_sweep() "/usr/users/aamine/src/ruby/gc.c":1026 #10 0x120050fc8 in rb_gc() "/usr/users/aamine/src/ruby/gc.c":1390 #11 0x12004f408 in rb_newobj() "/usr/users/aamine/src/ruby/gc.c":380 #12 0x12005ac58 in str_alloc(klass=5369351944) "/usr/users/aamine/src/ruby/string.c":44 #13 0x12005af50 in str_new3(klass=5369351944, str=5382187920) "/usr/users/aamine/src/ruby/string.c":120 #14 0x12005b00c in rb_str_new3(str=5382187920) "/usr/users/aamine/src/ruby/string.c":135 #15 0x12002a930 in rb_eval(self=5397852672, n=0x140cdab68) "/usr/users/aamine/src/ruby/eval.c":3610
環境は以下の通り。
いま OS にパッチキットを当ててるので、 そのあとでもう一回試してから dev に報告する予定。
ああそうか、このさい gcc で起こらなければあきらめるというのも手だな。 gcc も試してみよっと。
(19:34)
通った! やったー!
勝利の瞬間
tunami:~/obj/ruby-g % ./ruby -I./.ext -I./.ext/alphaev6-osf5.1b ~/src/ruby/test/runner.rb ~/src/ruby/test/drb/test_*.rb Loaded suite [/usr/users/aamine/src/ruby/test/drb/test_acl.rb, /usr/users/aamine/src/ruby/test/drb/test_drb.rb, /usr/users/aamine/src/ruby/test/drb/test_drbssl.rb, /usr/users/aamine/src/ruby/test/drb/test_drbunix.rb] Started ................................................... ................................................... ...... Finished in 52.285745 seconds. 108 tests, 447 assertions, 0 failures, 0 errors
まあ、代わりに openssl で落ちるようになりましたけどね。
(22:02)
今週末 21 日 (土) に開催です。 今回は場所がいつもと違うので要注意。
(04:19)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
うう、うちのNetBSD(もちろんgcc)でも
NoMethodError: undefined method `stop_service' for nil:NilClass
が出るので、あおきさんのデバッグにひそかに期待してたのですが…… orz
む、他のOSでも起きるんですか。
何が共通点なのかなあ。
複数のプロセスが実行されているときに、どっちかのプロセスでエラーが出たらnilになるのかなあ、とかまでは考えました。
kakasi対応した。
* [[世界の中心出会いを叫ぶ]]
?sekainochuushindeaiwosakebu
* [[世界の中心で愛を叫ぶ]]
?sekainochuushindeaiwosakebu
今は反省している。