Bug #15448
Updated by nobu (Nobuyoshi Nakada) about 5 years ago
```console ``` $ ./miniruby -e ' begin raise "foo" rescue => e1 begin raise "bar" rescue => e2 raise e1, cause: e2 end end ' Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): ... ``` This is caused by circular "cause" chain: ```ruby ``` begin raise "foo" rescue => e1 begin raise "bar" rescue => e2 begin # Virtually `e1.cause = e2` which makes the cause chain circular raise e1, cause: e2 rescue p $! #=> #<RuntimeError: foo> p $!.cause #=> #<RuntimeError: bar> p $!.cause.cause #=> #<RuntimeError: foo> p $!.cause.cause.cause #=> #<RuntimeError: bar> p $!.cause.cause.object_id == $!.object_id end end end ```