Project

General

Profile

Bug #18244

Updated by nobu (Nobuyoshi Nakada) 4 months ago

Having this code: 
 ```ruby ``` 
 # $stderr.sync = false 
 warn 'warn' 
 $stderr.puts 'err' 
 fail 
 ``` 
 When I run it like this `ruby test.rb 2>err.log`, output is ok: 
 ``` 
 warn 
 err 
 test.rb:3:in `<main>': unhandled exception 
 ``` 

 But when I uncomment the first line — the output is different: 
 ``` 
 warn 
 test.rb:3:in `<main>': unhandled exception 
 err 
 ``` 
 Why buffered output to the `$stderr` redirected to file has the **wrong order**? 
 If we do not redirect to the file — the order is ok (exception is the last line of the output). 

 Checked platforms: 
 `Windows10: Ruby v3.0.2.107 (2021-07-07) [x64-mingw32]` 
 `Linux: Ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]`

Back