From: matz@... (Yukihiro Matsumoto) Date: 1998-03-16T14:55:50+09:00 Subject: [ruby-dev:1804] Re: experimental release 1.1b9_02 まつもと ゆきひろです In message "[ruby-dev:1803] Re: experimental release 1.1b9_02" on 98/03/16, WATANABE Hirofumi writes: |わたなべです. | |io_check_closed を導入したあたりから cygwin32 での pipe が不 |安定です. ためしに Linux で atexit を活かしてやると同じよう |に SEGV になります. なんとなく同じものを 2 回 close してる気 |がする. pipe_atexitの中でpipe_del_fptr()が呼ばれてしまうので,まだ参 照しているpipe_listのノードをfree()してしまっているせいのよ うな気がします. 参考用のパッチです.うまく行くようでしたら教えて下さい. ついでにメモリリークをひとつ消しておきました. diff -u -1 -r1.1.1.2.2.12 io.c --- io.c 1998/03/13 09:04:30 1.1.1.2.2.12 +++ io.c 1998/03/16 05:52:48 @@ -915,2 +915,3 @@ pipe_list = list->next; + free(list); return; @@ -933,6 +934,9 @@ struct pipe_list *list = pipe_list; + struct pipe_list *tmp; + while (list) { + tmp = list->next; io_fptr_finalize(list->fptr); - list = list->next; + list = tmp; }