[#87467] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — mofezilla@...
Issue #14841 has been reported by hirura (Hiroyuki URANISHI).
3 messages
2018/06/10
[#87515] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — hirura@...
Issue #14841 has been updated by hirura (Hiroyuki URANISHI).
7 messages
2018/06/19
[#87516] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura@gmail.com wrote:
[#87517] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
Sorry, I left this out: If you can reproduce it again, can you
[#87519] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— hirura <hirura@...>
2018/06/19
Hi Eric,
[#87521] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura <hirura@gmail.com> wrote:
[#87541] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — normalperson@...
Issue #14859 has been reported by normalperson (Eric Wong).
4 messages
2018/06/21
[#87605] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been reported by k0kubun (Takashi Kokubun).
3 messages
2018/06/23
[#87614] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — normalperson@...
Issue #14867 has been updated by normalperson (Eric Wong).
4 messages
2018/06/23
[#87631] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been updated by k0kubun (Takashi Kokubun).
5 messages
2018/06/25
[#87635] Re: [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process
— Eric Wong <normalperson@...>
2018/06/25
takashikkbn@gmail.com wrote:
[#87665] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — eregontp@...
Issue #14867 has been updated by Eregon (Benoit Daloze).
4 messages
2018/06/28
[#87710] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — Greg.mpls@...
Issue #14867 has been updated by MSP-Greg (Greg L).
3 messages
2018/06/30
[ruby-core:87521] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
From:
Eric Wong <normalperson@...>
Date:
2018-06-19 12:37:09 UTC
List:
ruby-core #87521
hirura <hirura@gmail.com> wrote:
> I tried and reproduced this on
> - Ubuntu Linux on Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz (4cores / 8threads)
> - CentOS Linux on Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz (1cores /
> 2threads; a VM)
> Unfortunately I don't have a Linux machine with AMD or other vendors'.
OK, I'm on AMD (Phenom II) with 4 cores and no HT.
> As for additional gdb outputs, I have a dumped core file of the
> stopped process, and I tried printing the instructed.
> But I couldn't get "vm" variable like
> ~~~
> (gdb) print vm
> No symbol "vm" in current context.
> ~~~
> Could you give me a bit detailed way to get the output? I'm sorry I'm
> not familiar with gdb.
You can use "up" and "down" to move up/down stack frames until you're
in a function where "vm" is accessible. (I'm not a gdb expert, either)
> The t0 dummy thread is used so that the process is not killed by
> deadlock detection and I can get the core-dump.
> Without the thread, the process is killed as deadlock.
Odd, I can't reproduce a deadlock with t0 commented out, either.
> The output of the case is the below. I suppose deadlock detection is
> working as expected.
> (Line 45 is t1.join in this case)
> ~~~
> Traceback (most recent call last):
> 1: from readpartial_and_eof_test.rb:45:in `<main>'
> readpartial_and_eof_test.rb:45:in `join': No live threads left.
> Deadlock? (fatal)
> 2 threads, 2 sleeps current:0x00007f8c498cfc20 main thread:0x00007f8c49566470
OK, so that's 2 for both vm->living_thread_num and vm->sleeper;
in that case that's normal.
I'm wondering if a stuck process will show some strange values
(e.g. negative due to underflow).
Perhaps `volatile' is unnecessary and the compiler does
something strange with sleeper... Does removing it change
things?
```
--- a/vm_core.h
+++ b/vm_core.h
@@ -565,7 +565,7 @@ typedef struct rb_vm_struct {
unsigned int safe_level_: 1;
int trace_running;
- volatile int sleeper;
+ int sleeper;
/* object management */
VALUE mark_object_ary;
```
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>