Revision 388680342229b2f25642886dbb0c779690d6d089 authored by Keno Fischer on 25 October 2023, 02:02:03 UTC, committed by Cody Tapscott on 03 November 2023, 18:41:52 UTC
In #51852, we are coercing a boxed `Union{@NamedTuple{progress::String}, @NamedTuple{progress::Float64}}`
to `@NamedTuple{progress::String}` via convert_julia_type. This results in a jl_cgval_t that has
a Vboxed that points to a boxed `@NamedTuple{progress::Float64}` but with a `@NamedTuple{progress::String}`
type tag that the up upsilonnode code then tries to unbox into the typed PhiC slot. This ends up treating
the Float64 as a pointer and crashing in GC. Avoid this by adding a runtime check that the converted value
is actually compatible (we already had this kind of check for the non-boxed cases) and then making the
unboxing runtime-conditional on the type of the union matching the type of the phic.

Fixes #51852
1 parent 072896d
History
File Mode Size
workflows
CODEOWNERS -rw-r--r-- 209 bytes

back to top