From: shuujii@... Date: 2020-11-27T08:52:57+00:00 Subject: [ruby-dev:50972] [Ruby master Bug#17349] Rake での並行実行における正規表現マッチングの異常 Issue #17349 has been reported by shuujii (Shuji KOBAYASHI). ---------------------------------------- Bug #17349: Rake での並行実行における正規表現マッチングの異常 https://bugs.ruby-lang.org/issues/17349 * Author: shuujii (Shuji KOBAYASHI) * Status: Open * Priority: Normal * ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- 小さな再現コードが作成できなかったのですが、以下のように Rake で並行実行すると正規表現のマッチングがおかしくなることがあるように見えます。 ### 再現手順 ``` shell $ git clone https://github.com/mruby/mruby $ cd mruby $ git checkout 0cb3a718 $ rake -m CONFIG=boxing clean gensym Cleaned up target build folder GEN build/boxing-no-m64-i32/presym GEN build/boxing-no-m64-i32/include/mruby/presym.inc GEN build/boxing-no-m32-i32/presym GEN build/boxing-no-m32-i64/presym (snip) rake aborted! NoMethodError: undefined method `*' for nil:NilClass /mruby/tasks/presym.rake:81:in `block (4 levels) in ' /mruby/tasks/presym.rake:80:in `map' /mruby/tasks/presym.rake:80:in `block (3 levels) in ' /mruby/tasks/presym.rake:69:in `map' /mruby/tasks/presym.rake:69:in `block (2 levels) in ' Tasks: TOP => gensym => /mruby/build/boxing-no-m64-i64/presym (See full trace by running task with --trace) rake aborted! ``` エラーが発生しているのは以下の部分です。 https://github.com/mruby/mruby/blob/13fc5034345ae159f034849cb3f235f4463edd45/tasks/presym.rake#L80-L82 `prefix` や `suffix` の値がおかしくなっているために、`macro_to_symbol[[prefix, suffix]]` が `nil` なり例外になっています。本来であればこの値は `nil` にならないはずのものです。 ### 補足 * `rake` に `-m` を付けないで並行実行にしなければ発生しません。 * こちらの環境では少なくとも30回に1回くらいは上記のエラーが発生します。 * 正規表現のマッチ結果は上記とは違う異常になることもあるようです。 -- https://bugs.ruby-lang.org/