HaxeFoundation / haxe

Haxe - The Cross-Platform Toolkit
https://haxe.org
6.03k stars 648 forks source link

Fatal error: exception EvalContext.RunTimeException(_, 0, _) #11632

Closed yuxiaomao closed 2 months ago

yuxiaomao commented 2 months ago

When working on a project with heavy macro (at least hxbit) This error might occur when compiling (output with OCAMLRUNPARAM=b).

Fatal error: exception EvalContext.RunTimeException(_, 0, _)
Raised by primitive operation at file "src/macro/macroApi.ml", line 655, characters 34-39
Called from file "src/macro/macroApi.ml", line 796, characters 11-43
Called from file "src/macro/macroApi.ml", line 830, characters 7-21
Called from file "src/macro/macroApi.ml", line 837, characters 13-53
Called from file "list.ml", line 92, characters 20-23
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "list.ml", line 92, characters 32-39
Called from file "src/typing/macroContext.ml", line 963, characters 8-60
Called from file "src/typing/macroContext.ml", line 45, characters 2-6
Called from file "src/typing/typeloadFields.ml", line 402, characters 16-57
Re-raised at file "src/typing/typeloadFields.ml", line 402, characters 98-105
Called from file "list.ml", line 110, characters 12-15
Called from file "src/typing/typeloadFields.ml", line 432, characters 1-44
Called from file "src/typing/typeloadFields.ml", line 620, characters 1-356
Called from file "src/typing/typeloadFields.ml", line 1620, characters 14-48
Called from file "src/typing/typeloadModule.ml", line 411, characters 5-64
Re-raised at file "src/typing/typeloadModule.ml", line 433, characters 5-14
Called from file "src/typing/typeloadModule.ml", line 438, characters 44-58
Called from file "src/context/typecore.ml", line 496, characters 4-7
Called from file "src/compiler/compiler.ml", line 471, characters 2-9
Called from file "src/compiler/compiler.ml", line 693, characters 5-43
Called from file "src/compiler/compiler.ml", line 705, characters 13-22
Called from file "src/compiler/server.ml", line 790, characters 1-39
Called from file "src/compiler/haxe.ml", line 53, characters 0-56

I didn't managed to get a minimal repro but I have provided the sources to @kLabz . In any case, I don't think it should give fatal error while compiling.

kLabz commented 2 months ago

Compiler side fixed by 323d2c494e1a4553eb923abc6ae8cfc0f337f82d (hxbit still needs to avoid TPath({pack: [], name: "Null", params: [TPType(null)]}))