Skip to content

Heap2Local fuzz bug on struct.atomic.rmw.cmpxchg #8563

Description

@kripken
(module
 (rec
  (type $0 (sub (shared (struct))))
  (type $1 (sub (cont $8)))
  (type $2 (sub (shared (struct))))
  (type $3 (sub final $0 (shared (struct))))
  (type $4 (shared (func (result i64))))
  (type $5 (sub final $1 (cont $8)))
  (type $6 (sub $2 (shared (struct (field (mut (ref null $6)))))))
  (type $7 (func (param i64 (ref null $5)) (result f32)))
  (type $8 (func (result i64 (ref null $4) (ref null $3) (ref (shared i31)))))
 )
 (type $9 (func))
 (elem declare func $0)
 (export "func_65_invoker" (func $2))
 (func $0 (type $8) (result i64 (ref null $4) (ref null $3) (ref (shared i31)))
  (unreachable)
 )
 (@binaryen.js.called)
 (func $1 (type $7) (param $0 i64) (param $1 (ref null $5)) (result f32)
  (local $2 (ref $6))
  (drop
   (struct.atomic.rmw.cmpxchg $6 0
    (local.tee $2
     (struct.new_default $6)
    )
    (local.get $2)
    (ref.null (shared none))
   )
  )
  (f32.const 0)
 )
 (func $2 (type $9)
  (drop
   (call $1
    (i64.const 0)
    (cont.new $5
     (ref.func $0)
    )
   )
  )
 )
)
$ bin/wasm-opt a -all --fuzz-exec --heap2local
[fuzz-exec] export func_65_invoker
[fuzz-exec] export func_65_invoker
[trap null ref]
[fuzz-exec] comparing func_65_invoker
[fuzz-exec] optimization passes changed results

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions