Actions
Bug #15448
closedKernel#raise should not write "cause" attribute destructively
Description
$ ./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:
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
Updated by nobu (Nobuyoshi Nakada) about 6 years ago
- Status changed from Open to Closed
Actions
Like0
Like0Like0