# Bug #1872

**URL:** <https://www.ruby-forum.com/t/bug-1872/181449>\
**Category:** Development\
**Created:** [January 12, 2010, 5:58am UTC](https://www.ruby-forum.com/t/bug-1872/181449 "2010-01-12T05:58:24Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![MIURAS\_Fumiaki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c6cbf5/32.png) [@MIURAS\_Fumiaki](https://www.ruby-forum.com/u/MIURAS_Fumiaki)\
**Post date:** [January 12, 2010, 5:58am UTC](https://www.ruby-forum.com/t/bug-1872/181449/1 "2010-01-12T05:58:24Z")

</div>

NTTãƒ¬ã‚¾ãƒŠãƒ³ãƒˆã®ä¸‰æµ¦ã§ã™ã€‚

Bug #1872 [ruby-dev:38996]ã®å¯¾ç­–ã‚’ã—ã¦ã¿ã¾ã—ãŸã€‚

â– å•é¡Œã®å¾©ç¿’  
–enable-pthreadç‰ˆã§ruby -e 'Process.fork{p system(“ls”)}'ã¨ã‹ã™ã‚‹ã¨  
fork(2)ã®å¾Œã§å›ºã¾ã‚‹ã“ã¨ãŒã‚ã‚‹ã€‚

â– è§£æžçµæžœ  
ãƒ»fork()ã§ã§ããŸæ–°ã—ã„ãƒ—ãƒ­ã‚»ã‚¹ã®ä¸­ã«ã¯main threadä»¥å¤–ã®threadã¯å­˜åœ¨ã—  
ãªã„ã€‚å½“ç„¶ã€SIGVTALRMã—ã¦ãã‚Œã‚‹threadã‚‚ã„ãªã„ã€‚  
ãƒ»è©²threadã®åˆ¶å¾¡ã«safe\_mutex\_lock()ã‚’ä½¿ã†ã€‚safe\_mutex\_lock()ã®safeãŸã‚‹  
æ‰€ä»¥ã¯ã€lockã‚’ä¿æŒã—ã¦ã„ã‚‹threadãŒçµ‚äº†ã™ã‚‹æ™‚ã«lockã‚’è§£æ”¾ã™ã‚‹ã‹ã‚‰ã€‚ã  
ã®ãŸã‚ã«pthread\_cleanup\_push()ã‚’ä½¿ã†ã€‚  
ãƒ»fork()ã®æ™‚ã«ã¯è©²threadãŒçµ‚äº†ã—ã¦ã¯ã„ãªã„ãŸã‚ã€lockè§£æ”¾æ“ä½œã¯è¡Œã‚ã‚Œãª  
ã„ã€‚  
ãƒ»fork()ç›´å¾Œã«rb\_thread\_stop\_timer()ãŒå‘¼ã³å‡ºã•ã‚Œã€è©²lockã‚’æ“ä½œã—ã‚ˆã†ã¨  
ã—ã¦åˆºã•ã‚‹ã“ã¨ãŒã‚ã‚‹â€ ã€‚

–  
â€ pthread\_mutex\_tã¨pthread\_mutex\_lock()ã®å®Ÿç¾ã«ä¾å­˜ã™ã‚‹ã€‚åˆºã•ã‚‰ãªã„ç’°  
å¢ƒã‚‚ã‚ã‚‹ã‹ã‚‚ã€‚ä¸‰æµ¦ãŒä½¿ã£ãŸç’°å¢ƒã§ã¯pthread\_mutex\_trylock()ã§ã‚‚åˆºã•ã‚‹ã€‚

â– å¯¾ç­–  
ãƒ»fork()ç›´å¾Œã«è©²ãƒ‡ãƒ¼ã‚¿ã‚’åˆæœŸåŒ–ã™ã‚‹ã€‚fork()ç›´å¾Œãªã®ã§èª¿ã¹ãªãã¦ã‚‚ãã†ã„  
ã†threadã¯ã„ãªã„ã€‚

ruby-1.8.7-p248ã ã¨ã“ã†ã„ã†patchã§ã„ã„ã¨æ€ã„ã¾ã™ã€‚é–¢æ•°åä»¥å¤–ã¯ã€‚  
ä¸€æ™©å‹•ã‹ã—ã¦ã‚‚åˆºã•ã‚‰ãªããªã‚Šã¾ã—ãŸã€‚
