[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119518] [Ruby master Bug#20796] Segmentation fault in rubyzip tests with ruby 3.4.0-preview2
From:
"tikkss (Tsutomu Katsube) via ruby-core" <ruby-core@...>
Date:
2024-10-13 22:59:17 UTC
List:
ruby-core #119518
Issue #20796 has been updated by tikkss (Tsutomu Katsube).
File crash.file_test.log added
The segmentation fault does not reproduce when running the test individually:
```console
$ bundle exec rake TESTOPTS="-v --seed=1 --name=ZipFileTest#test_recover_permissions_after_add_files_to_archive"
ostruct was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.
You can add ostruct to your Gemfile or gemspec to silence this warning.
/Users/zzz/.rbenv/versions/3.4.0-preview2/bin/ruby -w -I"lib:lib:test" /Users/zzz/.rbenv/versions/3.4.0-preview2/lib/ruby/gems/3.4.0+0/gems/rake-13.1.0/lib/rake/rake_test_loader.rb "test/basic_zip_file_test.rb" "test/bzip2_support_test.rb" "test/case_sensitivity_test.rb" "test/central_directory_entry_test.rb" "test/central_directory_test.rb" "test/constants_test.rb" "test/crypto/null_encryption_test.rb" "test/crypto/traditional_encryption_test.rb" "test/decompressor_test.rb" "test/deflater_test.rb" "test/dos_time_test.rb" "test/encryption_test.rb" "test/entry_set_test.rb" "test/entry_test.rb" "test/extra_field_test.rb" "test/extra_field_unknown_test.rb" "test/extra_field_ut_test.rb" "test/file_extract_directory_test.rb" "test/file_extract_test.rb" "test/file_options_test.rb" "test/file_permissions_test.rb" "test/file_split_test.rb" "test/file_test.rb" "test/filesystem/dir_test.rb" "test/filesystem/directory_iterator_test.rb" "test/filesystem/file_mutating_test.rb" "test/filesystem/fi
le_nonmutating_test.rb" "test/filesystem/file_stat_test.rb" "test/inflater_test.rb" "test/input_stream_test.rb" "test/ioextras/abstract_input_stream_test.rb" "test/ioextras/abstract_output_stream_test.rb" "test/ioextras/fake_io_test.rb" "test/local_entry_test.rb" "test/output_stream_test.rb" "test/pass_thru_compressor_test.rb" "test/pass_thru_decompressor_test.rb" "test/path_traversal_test.rb" "test/samples/example_recursive_test.rb" "test/settings_test.rb" "test/stored_support_test.rb" "test/unicode_file_names_and_comments_test.rb" "test/zip64_full_test.rb" "test/zip64_support_test.rb" -v --seed=1 --name=ZipFileTest#test_recover_permissions_after_add_files_to_archive
Run options: -v --seed=1 --name=ZipFileTest#test_recover_permissions_after_add_files_to_archive
# Running:
ZipFileTest#test_recover_permissions_after_add_files_to_archive = 0.01 s = .
Finished in 0.011834s, 84.5023 runs/s, 253.5068 assertions/s.
1 runs, 3 assertions, 0 failures, 0 errors, 0 skips
Coverage report generated for Unit Tests to /private/tmp/rubyzip/coverage.
Line Coverage: 59.45% (1268 / 2133)
Branch Coverage: 22.82% (149 / 653)
Lcov style coverage report generated for Unit Tests to coverage/lcov.info
```
However, it reproduces when expanding the scope to a test file:
```console
$ bundle exec rake TEST="test/file_test.rb" TESTOPTS="-v --seed=1" 2>crash.file_test.log
Run options: -v --seed=1
# Running:
ZipFileTest#test_get_output_stream = 0.02 s = .
ZipFileTest#test_add_directory = 0.00 s = .
ZipFileTest#test_streaming = 0.00 s = .
ZipFileTest#test_nonexistant_zip = 0.00 s = .
ZipFileTest#test_open_buffer_without_block = 0.00 s = .
ZipFileTest#test_rename_to_existing_entry = 0.00 s = .
ZipFileTest#test_open_buffer_with_io_and_block = 0.00 s = .
ZipFileTest#test_write_buffer = 0.01 s = .
ZipFileTest#test_open_buffer_with_stringio = 0.00 s = .
ZipFileTest#test_odd_extra_field = 0.00 s = .
ZipFileTest#test_add_existing_entry_name = 0.00 s = .
ZipFileTest#test_open_buffer_no_op_does_not_change_file = 0.00 s = .
ZipFileTest#test_replace = 0.01 s = .
ZipFileTest#test_rename = 0.01 s = .
ZipFileTest#test_recover_permissions_after_add_files_to_archive = 0.01 s = .
ZipFileTest#test_get_input_stream_stored_with_gpflag_bit3 = 0.00 s = .
ZipFileTest#test_remove = 0.01 s = .
ZipFileTest#test_preserve_file_order = %
```
See attached `crash.file_test.log` for full details.
By the way, crash log does not exists in `~/Library/Logs/DiagnosticReports/`.
Thanks!
----------------------------------------
Bug #20796: Segmentation fault in rubyzip tests with ruby 3.4.0-preview2
https://bugs.ruby-lang.org/issues/20796#change-110131
* Author: tikkss (Tsutomu Katsube)
* Status: Open
* ruby -v: ruby 3.4.0preview2 (2024-10-07 master 32c733f57b) +PRISM [x86_64-darwin24]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
Steps to reproduce
---
```console
$ git clone git@github.com:rubyzip/rubyzip
$ cd rubyzip
$ bundle
$ bundle exec rake
```
Expected behavior
---
The tests should complete successfully.
Actual behavior
---
A segmentation fault occurs during the test run.
This issue does not occur with ruby 3.4.0-preview1 or other Ruby versions.
Console dump
---
See attached `crash.log` and `ruby-2024-10-13-071029.ips` for full details
```console
$ bundle exec rake TESTOPTS="-v --seed=1" 2>crash.log
Run options: -v --seed=1
# Running:
ZipFileTest#test_get_output_stream = 0.02 s = .
ZipFileTest#test_add_directory = 0.01 s = .
ZipFileTest#test_streaming = 0.01 s = .
ZipFileTest#test_nonexistant_zip = 0.00 s = .
ZipFileTest#test_open_buffer_without_block = 0.00 s = .
ZipFileTest#test_rename_to_existing_entry = 0.00 s = .
ZipFileTest#test_open_buffer_with_io_and_block = 0.00 s = .
ZipFileTest#test_write_buffer = 0.01 s = .
ZipFileTest#test_open_buffer_with_stringio = 0.00 s = .
ZipFileTest#test_odd_extra_field = 0.00 s = .
ZipFileTest#test_add_existing_entry_name = 0.00 s = .
ZipFileTest#test_open_buffer_no_op_does_not_change_file = 0.00 s = .
ZipFileTest#test_replace = 0.01 s = .
ZipFileTest#test_rename = 0.01 s = .
ZipFileTest#test_recover_permissions_after_add_files_to_archive = %
```
My environment
---
```console
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 3.6.0.dev
- RUBY VERSION: 3.4.0 (2024-10-07 patchlevel -1) [x86_64-darwin24]
- INSTALLATION DIRECTORY: /Users/zzz/.rbenv/versions/3.4.0-preview2/lib/ruby/gems/3.4.0+0
- USER INSTALLATION DIRECTORY: /Users/zzz/.gem/ruby/3.4.0+0
- RUBY EXECUTABLE: /Users/zzz/.rbenv/versions/3.4.0-preview2/bin/ruby
- GIT EXECUTABLE: /usr/local/bin/git
- EXECUTABLE DIRECTORY: /Users/zzz/.rbenv/versions/3.4.0-preview2/bin
- SPEC CACHE DIRECTORY: /Users/zzz/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/zzz/.rbenv/versions/3.4.0-preview2/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-24
- GEM PATHS:
- /Users/zzz/.rbenv/versions/3.4.0-preview2/lib/ruby/gems/3.4.0+0
- /Users/zzz/.gem/ruby/3.4.0+0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => true
- :bulk_threshold => 1000
- "gem" => "--no-document"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/zzz/.rbenv/versions/3.4.0-preview2/bin
- /usr/local/Cellar/rbenv/1.3.0/libexec
- /Users/zzz/.local/bin
- /Users/zzz/.rbenv/shims
- /Users/zzz/.rbenv/bin
- /Users/zzz/.nodenv/bin
- /Users/zzz/bin
- /Users/zzz/.cargo/bin
- /usr/local/sbin
- /usr/local/bin
- /System/Cryptexes/App/usr/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
- /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
- /Library/Apple/usr/bin
```
```console
$ cat Gemfile.lock
PATH
remote: .
specs:
rubyzip (3.0.0.alpha)
GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
docile (1.4.1)
json (2.7.2)
language_server-protocol (3.17.0.3)
minitest (5.22.3)
parallel (1.26.3)
parser (3.3.5.0)
ast (~> 2.4.1)
racc
psych (5.1.2)
stringio
racc (1.8.1)
rainbow (3.1.1)
rake (13.1.0)
rdoc (6.6.3.1)
psych (>= 4.0.0)
regexp_parser (2.9.2)
rexml (3.3.8)
rubocop (1.61.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.32.3)
parser (>= 3.3.1.0)
rubocop-performance (1.20.2)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rake (0.6.0)
rubocop (~> 1.0)
ruby-progressbar (1.13.0)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4)
stringio (3.1.1)
unicode-display_width (2.6.0)
PLATFORMS
ruby
x86_64-darwin-24
DEPENDENCIES
minitest (~> 5.22.0)
rake (~> 13.1.0)
rdoc (~> 6.6.2)
rubocop (~> 1.61.0)
rubocop-performance (~> 1.20.0)
rubocop-rake (~> 0.6.0)
rubyzip!
simplecov (~> 0.22.0)
simplecov-lcov (~> 0.8)
BUNDLED WITH
2.6.0.dev
```
---Files--------------------------------
crash.log (74.3 KB)
ruby-2024-10-13-071029.ips (31.5 KB)
crash.file_test.log (70.2 KB)
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/