[#44036] [ruby-trunk - Feature #6242][Open] Ruby should support lists — "shugo (Shugo Maeda)" <redmine@...>
[#44084] [ruby-trunk - Bug #6246][Open] 1.9.3-p125 intermittent segfault — "jshow (Jodi Showers)" <jodi@...>
[#44156] [ruby-trunk - Feature #6265][Open] Remove 'useless' 'concatenation' syntax — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>
Hi,
(2012/04/09 14:19), Yukihiro Matsumoto wrote:
[#44163] [ruby-trunk - Bug #6266][Open] encoding related exception with recent integrated psych — "jonforums (Jon Forums)" <redmine@...>
[#44233] [ruby-trunk - Bug #6274][Open] Float addition incorrect — "swanboy (Michael Swan)" <swanyboy4@...>
[#44303] [ruby-trunk - Feature #6284][Open] Add composition for procs — "pabloh (Pablo Herrero)" <pablodherrero@...>
[#44329] [ruby-trunk - Feature #6287][Open] nested method should only be visible by nesting/enclosing method — "botp (bot pena)" <botpena@...>
[#44349] [ruby-trunk - Feature #6293][Open] new queue / blocking queues — "tenderlovemaking (Aaron Patterson)" <aaron@...>
On Sat, Apr 14, 2012 at 10:58:12AM +0900, mame (Yusuke Endoh) wrote:
Hi,
On Mon, Apr 16, 2012 at 06:25:59PM +0900, SASADA Koichi wrote:
[#44372] Possible merge error of code in Issue 4651 on to Ruby 1.9.3-p125? — "Blythe,Aaron" <ABLYTHE@...>
tl;dr I believe I have uncovered a merge error to ruby 1.9.3-p125 from Issu=
[#44431] [Backport93 - Backport #6314][Open] Backport r35374 and r35375 — "drbrain (Eric Hodel)" <[email protected]>
[#44432] [ruby-trunk - Feature #6315][Open] handler to trace output of each line of code executed — "ankopainting (Anko Painting)" <anko.com+ruby@...>
[#44533] [ruby-trunk - Bug #6341][Open] SIGSEGV: Thread.new { fork { GC.start } }.join — "rudolf (r stu3)" <redmine@...>
Hello,
On Mon, Apr 23, 2012 at 11:17 PM, Yusuke Endoh <[email protected]> wrote:
Hello,
(4/24/12 6:55 AM), Yusuke Endoh wrote:
> kosaki (Motohiro KOSAKI) wrote:
[#44540] [ruby-trunk - Bug #6343][Open] Improved Fiber documentation — "andhapp (Anuj Dutta)" <anuj@...>
[#44612] [ruby-trunk - Feature #6354][Open] Remove escape (break/return/redo/next support) from class/module scope — "ko1 (Koichi Sasada)" <redmine@...>
[#44630] [ruby-trunk - Feature #6361][Open] Bitwise string operations — "MartinBosslet (Martin Bosslet)" <Martin.Bosslet@...>
On Fri, Apr 27, 2012 at 8:53 PM, MartinBosslet (Martin Bosslet)
On Saturday, April 28, 2012 at 8:52 AM, KOSAKI Motohiro wrote:
[#44636] [ruby-trunk - Bug #6364][Open] Segmentation fault happend when running test_cptr.rb — "raylinn@... (ray linn)" <raylinn@...>
[#44667] possible YAML bug in ruby 1.9.3p125? — Young Hyun <youngh@...>
YAML in ruby 1.9.3p125 seems to have a bug reading in YAML from older =
[#44686] [BUG] not a node 0x07 — ronald braswell <rpbraswell@...>
Running ruby 1.8.6 on Solaris 10.
2012/4/28 ronald braswell <[email protected]>:
I have heard reports of this on 1.9.x. Do you know if this problem has
[#44704] [ruby-trunk - Feature #6373][Open] public #self — "trans (Thomas Sawyer)" <transfire@...>
Issue #6373 has been updated by Marc-Andre Lafortune.
[#44743] [ruby-trunk - Feature #6375][Open] Python notation for literal Hash — "alexeymuranov (Alexey Muranov)" <redmine@...>
[#44748] [ruby-trunk - Feature #6376][Open] Feature lookup and checking if feature is loaded — "trans (Thomas Sawyer)" <transfire@...>
On Thu, May 3, 2012 at 6:02 AM, mame (Yusuke Endoh) <[email protected]> wrote:
[ruby-core:44417] [ruby-trunk - Bug #6278][Assigned] in `join': deadlock detected (fatal)
Issue #6278 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned ---------------------------------------- Bug #6278: in `join': deadlock detected (fatal) https://bugs.ruby-lang.org/issues/6278#change-25964 Author: [email protected] (Kurt Miller) Status: Assigned Priority: Normal Assignee: ko1 (Koichi Sasada) Category: Target version: ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [i386-openbsd] There is a race condition between native_sleep(), thread_start_func_2() where thread_start_func_2() holds the gvl lock, then in this bit of code: 514 /* wake up joining threads */ 515 join_th = th->join_list_head; 516 while (join_th) { 517 if (join_th == main_th) errinfo = Qnil; 518 rb_threadptr_interrupt(join_th); 519 switch (join_th->status) { 520 case THREAD_STOPPED: case THREAD_STOPPED_FOREVER: 521 printf("%p %d\n", join_th, join_th->status); 522 join_th->status = THREAD_RUNNABLE; 523 default: break; 524 } 525 join_th = join_th->join_list_next; 526 } 527 528 rb_threadptr_unlock_all_locking_mutexes(th); 529 if (th != main_th) rb_check_deadlock(th->vm); The other thread in native_sleep() is interrupted via the rb_threadptr_interrupt(join_th) call above. Then the join_th->status is set to THREAD_RUNNABLE above. The other thread blocks trying to get the gvl lock in native_sleep(): 914 GVL_UNLOCK_END(); Then the thread in thread_start_func_2() calls rb_check_deadlock(): 529 if (th != main_th) rb_check_deadlock(th->vm); which thinks the thread in native_sleep is deadlocked since it is not in the correct state. Here are the backtraces for the two threads, I added abort() in check_deadlock_i() when it decides there is a deadlock for a thread: (gdb) thread 1 [Switching to thread 1 (process 930810973)]#0 0x0d9b248d in kill () from /usr/lib/libc.so.63.0 (gdb) bt #0 0x0d9b248d in kill () from /usr/lib/libc.so.63.0 #1 0x0da1c925 in abort () at /usr/src/lib/libc/stdlib/abort.c:68 #2 0x0ddd5095 in check_deadlock_i (key=2081393040, val=695888864, found=0x7d300f38) at thread.c:4738 #3 0x0dd6b9ce in st_foreach (table=0x7c162d20, func=0xddd503f <check_deadlock_i>, arg=2100301624) at st.c:787 #4 0x0ddd526a in rb_check_deadlock (vm=0x7c034a00) at thread.c:4785 #5 0x0ddce8d1 in thread_start_func_2 (th=0x7c64be00, stack_start=0x7d301000) at thread.c:529 #6 0x0ddcd51e in thread_start_func_1 (th_ptr=0x7c64be00) at thread_pthread.c:653 #7 0x097a948e in _rthread_start (v=0x7c60f800) at rthread.c:113 #8 0x0d99ae81 in __tfork_thread () from /usr/lib/libc.so.63.0 (gdb) frame 5 #5 0x0ddce8d1 in thread_start_func_2 (th=0x7c64be00, stack_start=0x7d301000) at thread.c:529 529 if (th != main_th) rb_check_deadlock(th->vm); (gdb) thread 2 [Switching to thread 2 (process 207424605)]#0 0x0d9a9715 in _thread_sys___thrsleep () (gdb) bt #0 0x0d9a9715 in _thread_sys___thrsleep () from /usr/lib/libc.so.63.0 #1 0x097a7190 in pthread_cond_wait (condp=0x7c034a10, mutexp=0x7c034a08) at rthread_sync.c:473 #2 0x0ddcd0b4 in native_cond_wait (cond=0x7c034a10, mutex=0x7c034a08) at thread_pthread.c:304 #3 0x0ddccb15 in gvl_acquire_common (vm=0x7c034a00) at thread_pthread.c:61 #4 0x0ddccb7f in gvl_acquire (vm=0x7c034a00, th=0x7c034200) at thread_pthread.c:79 #5 0x0ddcd848 in native_sleep (th=0x7c034200, timeout_tv=0x0) at thread_pthread.c:914 #6 0x0ddcf2ea in sleep_forever (th=0x7c034200, deadlockable=1) at thread.c:856 #7 0x0ddcef97 in thread_join_sleep (arg=3485240628) at thread.c:689 #8 0x0dcbdda7 in rb_ensure (b_proc=0xddcef52 <thread_join_sleep>, data1=3485240628, e_proc=0xddceee6 <remove_from_join_list>, data2=3485240628) at eval.c:744 #9 0x0ddcf096 in thread_join (target_th=0x7c393600, delay=1e+30) at thread.c:722 #10 0x0ddcf191 in thread_join_m (argc=0, argv=0x7c05003c, self=2087355560) at thread.c:803 #11 0x0ddb7125 in call_cfunc (func=0xddcf113 <thread_join_m>, recv=2087355560, len=Variable "len" is not available. ) at vm_insnhelper.c:317 #12 0x0ddbf1bc in vm_call_method (th=0x7c034200, cfp=0x7c0cfef8, num=0, blockptr=0x1, flag=0, id=4736, me=0x7c166220, recv=2087355560) at vm_insnhelper.c:404 #13 0x0ddc2a60 in vm_exec_core (th=0x7c034200, initial=Variable "initial" is not available. ) at insns.def:1015 #14 0x0ddc9401 in vm_exec (th=0x7c034200) at vm.c:1220 #15 0x0ddc9bc0 in invoke_block_from_c (th=0x7c034200, block=0x7c0cff90, self=2081428100, argc=1, argv=0xcfbc9700, blockptr=0x0, cref=0x0) at vm.c:624 #16 0x0ddca167 in rb_yield (val=2087355560) at vm.c:654 #17 0x0dc8cad2 in rb_ary_each (array=2087355600) at array.c:1478 #18 0x0ddb710c in call_cfunc (func=0xdc8ca80 <rb_ary_each>, recv=2087355600, len=Variable "len" is not available. ) at vm_insnhelper.c:320 #19 0x0ddbf1bc in vm_call_method (th=0x7c034200, cfp=0x7c0cff7c, num=0, blockptr=0x7c0cff91, flag=0, id=424, me=0x7c135940, recv=2087355600) at vm_insnhelper.c:404 #20 0x0ddc2a60 in vm_exec_core (th=0x7c034200, initial=Variable "initial" is not available. ) at insns.def:1015 #21 0x0ddc9401 in vm_exec (th=0x7c034200) at vm.c:1220 #22 0x0ddc95b7 in rb_iseq_eval_main (iseqval=2082861760) at vm.c:1461 #23 0x0dcbea29 in ruby_exec_internal (n=0x7c25f2c0) at eval.c:204 #24 0x0dcbea55 in ruby_exec_node (n=0x7c25f2c0) at eval.c:251 #25 0x0dcbfe2e in ruby_run_node (n=0x7c25f2c0) at eval.c:244 #26 0x1c000984 in main (argc=4, argv=0xcfbca128) at main.c:38 (gdb) frame 5 #5 0x0ddcd848 in native_sleep (th=0x7c034200, timeout_tv=0x0) at thread_pthread.c:914 914 GVL_UNLOCK_END(); $ ruby19 -v ruby 1.9.3p125 (2012-02-16 revision 34643) [i386-openbsd] To reproduce install ruby-sequel from http://sequel.rubyforge.org/ $ cat cpu_bench.rb require 'sequel' def a 1000.times{|j| Sequel.connect(:adapter=>:mock){}} end (0..10).map{Thread.new{a}}.each{|t| t.join} $ cat doit until [ $? -ne 0 ]; do ruby19 -I sequel/lib cpu_bench.rb done echo $? -- http://bugs.ruby-lang.org/