alexcrichton added the wasm-proposal:gc label to Issue #13029.
alexcrichton added the fuzz-bug label to Issue #13029.
alexcrichton opened issue #13029:
This module:
(module (rec (type (;0;) (sub (func (param f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 nullexternref nullexternref nullexternref nullexternref) (result nullexternref eqref eqref eqref eqref eqref eqref eqref eqref eqref eqref nullexternref f64 f64 f64 f64 i32 i64)))) (type (;1;) (array (mut i8))) (type (;2;) (array (mut i8))) (type (;3;) (array (mut i8))) (type (;4;) (array (mut i8))) (type (;5;) (array (mut i8))) (type (;6;) (array (mut i8))) (type (;7;) (array (mut i8))) (type (;8;) (array (mut i8))) (type (;9;) (array (mut i8))) (type (;10;) (array (mut i8))) (type (;11;) (array (mut i8))) (type (;12;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;13;) (array (mut i8))) (type (;14;) (array (mut i8))) (type (;15;) (array (mut i8))) (type (;16;) (array (mut i8))) (type (;17;) (array (mut i8))) (type (;18;) (array (mut i8))) (type (;19;) (array (mut i8))) (type (;20;) (array (mut i8))) (type (;21;) (array (mut i8))) (type (;22;) (array (mut i8))) (type (;23;) (array (mut i8))) (type (;24;) (array (mut i8))) (type (;25;) (array (mut i8))) (type (;26;) (sub (array i8))) (type (;27;) (array (mut i8))) (type (;28;) (array (mut i8))) (type (;29;) (array (mut i8))) (type (;30;) (array (mut i8))) (type (;31;) (array (mut i8))) (type (;32;) (sub (array v128))) (type (;33;) (sub (struct (field (mut f64)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f64) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;34;) (array (mut i8))) (type (;35;) (array (mut i8))) (type (;36;) (array (mut i8))) (type (;37;) (array (mut i8))) (type (;38;) (array (mut i8))) (type (;39;) (struct (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;40;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)))) (type (;41;) (array i8)) (type (;42;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;43;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field (mut i8)) (field (mut i8))))) (type (;44;) (array (mut i8))) (type (;45;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;46;) (array (mut i8))) (type (;47;) (array (mut i8))) (type (;48;) (array (mut i8))) (type (;49;) (array (mut i8))) (type (;50;) (array (mut i8))) (type (;51;) (array (mut i8))) (type (;52;) (array (mut i8))) (type (;53;) (array (mut i8))) (type (;54;) (array (mut i8))) (type (;55;) (array (mut i8))) (type (;56;) (array (mut i8))) (type (;57;) (array (mut i8))) (type (;58;) (array (mut i8))) (type (;59;) (array (mut i8))) (type (;60;) (array (mut i8))) (type (;61;) (array (mut i8))) (type (;62;) (array (mut i8))) (type (;63;) (array (mut i8))) (type (;64;) (array (mut i8))) (type (;65;) (sub (array v128))) (type (;66;) (sub (struct (field (mut f64)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f32) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;67;) (array (mut i8))) (type (;68;) (array (mut i8))) (type (;69;) (array (mut i8))) (type (;70;) (array (mut i8))) (type (;71;) (struct (field (mut f32)) (field (mut i8)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f32) (field f64) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;72;) (array (mut i8))) (type (;73;) (array (mut i8))) (type (;74;) (array (mut i8))) (type (;75;) (array (mut i8))) (type (;76;) (array (mut i8))) (type (;77;) (struct (field i8) (field i8) (field (mut i64)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i8) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;78;) (array (mut f64))) (type (;79;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field nullfuncref) (field f32))) (type (;80;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;81;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;82;) (sub (struct (field f32) (field (mut f64)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut i8))))) (type (;83;) (array i8)) (type (;84;) (array (mut i8))) (type (;85;) (array (mut i8))) (type (;86;) (func (result (ref null 2) f64 externref))) (type (;87;) (sub (struct (field f32) (field f32) (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;88;) (array (mut i8))) (type (;89;) (array (mut i8))) (type (;90;) (array i8)) (type (;91;) (array (mut (ref null 71)))) (type (;92;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut i32)) (field (mut (ref null 71))) (field i8) (field i8))) (type (;93;) (sub final 0 (func (param f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 nullexternref nullexternref externref externref) (result nullexternref (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) nullexternref f64 f64 f64 f64 i32 i64)))) (type (;94;) (struct (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i16) (field i8) (field i8))) (type (;95;) (struct (field i8) (field (mut i16)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (ref null 23)) (field f32) (field f32) (field f32))) (type (;96;) (sub (struct (field (mut i16)) (field i8) (field (mut i16)) (field (mut i8)) (field (mut i8))))) (type (;97;) (array (mut i8))) (type (;98;) (array (mut i8))) (type (;99;) (array (mut i8))) (type (;100;) (array (mut i8))) (type (;101;) (sub (struct (field f32) (field f32) (field f32) (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field i16) (field i8) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;102;) (func (param f64 f64 f64 f64 f64 f64 f64 f64))) (type (;103;) (sub (struct))) (type (;104;) (array i8)) (type (;105;) (array (mut i8))) (type (;106;) (sub (array i8))) (type (;107;) (array (mut i8))) (type (;108;) (struct (field (mut f64)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i16)) (field (mut i8)) (field (mut i8)))) (type (;109;) (array (mut i8))) (type (;110;) (func (result nullref f32))) (type (;111;) (sub (array (mut i8)))) (type (;112;) (struct (field f32) (field f32) (field f32) (field f32) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;113;) (array i8)) (type (;114;) (array (mut i8))) (type (;115;) (array (mut i8))) (type (;116;) (array (mut i16))) (type (;117;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut (ref null 71))) (field (mut (ref null 71))))) (type (;118;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8))) (type (;119;) (sub (array (mut i8)))) (type (;120;) (array (mut i64))) (type (;121;) (sub (array (mut i8)))) (type (;122;) (array (mut i8))) (type (;123;) (array (mut i8))) (type (;124;) (array (mut i16))) (type (;125;) (array (mut i8))) (type (;126;) (struct (field (mut (ref null 71))) (field (mut (ref null 21))) (field f32) (field f32) (field f32) (field f32) (field f32) (field f64))) (type (;127;) (array (mut i8))) (type (;128;) (array (mut i8))) (type (;129;) (array (mut i8))) (type [message truncated]
fitzgen assigned fitzgen to issue #13029.
fitzgen commented on issue #13029:
Note that this is tested again
main, which doesn't yet include #12992, so this may be fixed by that.Pretty sure this is a dupe of that, but will double check once that lands.
Also, somewhat impressed that wasm-smith generated a program that hit this bug! That's pretty reassuring.
fitzgen commented on issue #13029:
Yep, this is fixed after https://github.com/bytecodealliance/wasmtime/pull/12974
fitzgen closed issue #13029:
This module:
(module (rec (type (;0;) (sub (func (param f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 nullexternref nullexternref nullexternref nullexternref) (result nullexternref eqref eqref eqref eqref eqref eqref eqref eqref eqref eqref nullexternref f64 f64 f64 f64 i32 i64)))) (type (;1;) (array (mut i8))) (type (;2;) (array (mut i8))) (type (;3;) (array (mut i8))) (type (;4;) (array (mut i8))) (type (;5;) (array (mut i8))) (type (;6;) (array (mut i8))) (type (;7;) (array (mut i8))) (type (;8;) (array (mut i8))) (type (;9;) (array (mut i8))) (type (;10;) (array (mut i8))) (type (;11;) (array (mut i8))) (type (;12;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;13;) (array (mut i8))) (type (;14;) (array (mut i8))) (type (;15;) (array (mut i8))) (type (;16;) (array (mut i8))) (type (;17;) (array (mut i8))) (type (;18;) (array (mut i8))) (type (;19;) (array (mut i8))) (type (;20;) (array (mut i8))) (type (;21;) (array (mut i8))) (type (;22;) (array (mut i8))) (type (;23;) (array (mut i8))) (type (;24;) (array (mut i8))) (type (;25;) (array (mut i8))) (type (;26;) (sub (array i8))) (type (;27;) (array (mut i8))) (type (;28;) (array (mut i8))) (type (;29;) (array (mut i8))) (type (;30;) (array (mut i8))) (type (;31;) (array (mut i8))) (type (;32;) (sub (array v128))) (type (;33;) (sub (struct (field (mut f64)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f64) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;34;) (array (mut i8))) (type (;35;) (array (mut i8))) (type (;36;) (array (mut i8))) (type (;37;) (array (mut i8))) (type (;38;) (array (mut i8))) (type (;39;) (struct (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;40;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)))) (type (;41;) (array i8)) (type (;42;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;43;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field (mut i8)) (field (mut i8))))) (type (;44;) (array (mut i8))) (type (;45;) (struct (field (mut nullexternref)) (field (mut nullexternref)) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;46;) (array (mut i8))) (type (;47;) (array (mut i8))) (type (;48;) (array (mut i8))) (type (;49;) (array (mut i8))) (type (;50;) (array (mut i8))) (type (;51;) (array (mut i8))) (type (;52;) (array (mut i8))) (type (;53;) (array (mut i8))) (type (;54;) (array (mut i8))) (type (;55;) (array (mut i8))) (type (;56;) (array (mut i8))) (type (;57;) (array (mut i8))) (type (;58;) (array (mut i8))) (type (;59;) (array (mut i8))) (type (;60;) (array (mut i8))) (type (;61;) (array (mut i8))) (type (;62;) (array (mut i8))) (type (;63;) (array (mut i8))) (type (;64;) (array (mut i8))) (type (;65;) (sub (array v128))) (type (;66;) (sub (struct (field (mut f64)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f32) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;67;) (array (mut i8))) (type (;68;) (array (mut i8))) (type (;69;) (array (mut i8))) (type (;70;) (array (mut i8))) (type (;71;) (struct (field (mut f32)) (field (mut i8)) (field (mut i8)) (field f32) (field f32) (field f32) (field f32) (field f32) (field f64) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;72;) (array (mut i8))) (type (;73;) (array (mut i8))) (type (;74;) (array (mut i8))) (type (;75;) (array (mut i8))) (type (;76;) (array (mut i8))) (type (;77;) (struct (field i8) (field i8) (field (mut i64)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i8) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;78;) (array (mut f64))) (type (;79;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field nullfuncref) (field f32))) (type (;80;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;81;) (sub (struct (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32) (field f32)))) (type (;82;) (sub (struct (field f32) (field (mut f64)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut i8))))) (type (;83;) (array i8)) (type (;84;) (array (mut i8))) (type (;85;) (array (mut i8))) (type (;86;) (func (result (ref null 2) f64 externref))) (type (;87;) (sub (struct (field f32) (field f32) (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;88;) (array (mut i8))) (type (;89;) (array (mut i8))) (type (;90;) (array i8)) (type (;91;) (array (mut (ref null 71)))) (type (;92;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut i32)) (field (mut (ref null 71))) (field i8) (field i8))) (type (;93;) (sub final 0 (func (param f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 f64 nullexternref nullexternref externref externref) (result nullexternref (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) (ref null 76) nullexternref f64 f64 f64 f64 i32 i64)))) (type (;94;) (struct (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field i16) (field i8) (field i8))) (type (;95;) (struct (field i8) (field (mut i16)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (ref null 23)) (field f32) (field f32) (field f32))) (type (;96;) (sub (struct (field (mut i16)) (field i8) (field (mut i16)) (field (mut i8)) (field (mut i8))))) (type (;97;) (array (mut i8))) (type (;98;) (array (mut i8))) (type (;99;) (array (mut i8))) (type (;100;) (array (mut i8))) (type (;101;) (sub (struct (field f32) (field f32) (field f32) (field (mut v128)) (field i8) (field (mut i16)) (field i8) (field i16) (field i8) (field i8) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8))))) (type (;102;) (func (param f64 f64 f64 f64 f64 f64 f64 f64))) (type (;103;) (sub (struct))) (type (;104;) (array i8)) (type (;105;) (array (mut i8))) (type (;106;) (sub (array i8))) (type (;107;) (array (mut i8))) (type (;108;) (struct (field (mut f64)) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i16)) (field (mut i8)) (field (mut i8)))) (type (;109;) (array (mut i8))) (type (;110;) (func (result nullref f32))) (type (;111;) (sub (array (mut i8)))) (type (;112;) (struct (field f32) (field f32) (field f32) (field f32) (field (mut i16)) (field i8) (field (mut i16)) (field i8) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field (mut i8)))) (type (;113;) (array i8)) (type (;114;) (array (mut i8))) (type (;115;) (array (mut i8))) (type (;116;) (array (mut i16))) (type (;117;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut nullexternref)) (field (mut (ref null 71))) (field (mut (ref null 71))))) (type (;118;) (struct (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut (ref null 71))) (field (mut f64)) (field (mut i8)) (field (mut i8)) (field (mut i8)) (field i8))) (type (;119;) (sub (array (mut i8)))) (type (;120;) (array (mut i64))) (type (;121;) (sub (array (mut i8)))) (type (;122;) (array (mut i8))) (type (;123;) (array (mut i8))) (type (;124;) (array (mut i16))) (type (;125;) (array (mut i8))) (type (;126;) (struct (field (mut (ref null 71))) (field (mut (ref null 21))) (field f32) (field f32) (field f32) (field f32) (field f32) (field f64))) (type (;127;) (array (mut i8))) (type (;128;) (array (mut i8))) (type (;129;) (array (mut i8))) (type (;13 [message truncated]
Last updated: Apr 12 2026 at 23:10 UTC