exatomvm icon indicating copy to clipboard operation
exatomvm copied to clipboard

Unable to run hello-world

Open mordv opened this issue 4 months ago • 2 comments

I was going through docs

After mix atomvm.packbeam i get:

21:29:26.362 [error] Process #PID<0.236.0> raised an exception
** (RuntimeError) found error while checking types for Mix.Tasks.Atomvm.Uf2create.run/1:

** (MatchError) no match of right hand side value: {:EXIT, {:badarg, [{:erlang, :binary_to_atom, [<<117, 102, 50, 116, 111, 111, 108, 64, 109, 97, 105, 110, 96, 101, 114, 108, 97, 110, 103, 96, 108, 101, 110, 103, 116, 104, 32, 105, 111, 96, 102, 111, 114, 109, 97, 116, 64, 104, 97, 108, 116, ...>>, :utf8], [error_info: %{module: :erl_erts_errors}]}, {:beam_lib, :extract_atom, 2, [file: ~c"beam_lib.erl", line: 1217]}, {:beam_lib, :get_atom_data, 8, [file: ~c"beam_lib.erl", line: 981]}, {:beam_lib, :scan_beam1, 2, [file: ~c"beam_lib.erl", line: 942]}, {:beam_lib, :scan_beam, 4, [file: ~c"beam_lib.erl", line: 927]}, {:beam_lib, :read_chunk_data, 3, [file: ~c"beam_lib.erl", line: 899]}, {:beam_lib, :read_chunk_data, 2, [file: ~c"beam_lib.erl", line: 890]}, {Module.ParallelChecker, :cache_module, 2, [file: ~c"lib/module/parallel_checker.ex", line: 360]}]}}
The exception happened while checking this code:

def run(args) do
  config = Mix.Project.config()

  with {:atomvm, {:ok, avm_config}} <- {:atomvm, Keyword.fetch(config, :atomvm)},
       {:args, {:ok, options}} <- {:args, parse_args(args)},
       {:pack, {:ok, _}} <- {:pack, Mix.Tasks.Atomvm.Packbeam.run(args)} do
    app_start =
      parse_addr(
        Keyword.get(
          avm_config,
          :app_start,
          Map.get(options, :app_start, System.get_env("ATOMVM_PICO_APP_START", "0x10180000"))
        )
      )

    family_id =
      validate_fam(
        Keyword.get(
          avm_config,
          :family_id,
          Map.get(options, :family_id, System.get_env("ATOMVM_PICO_UF2_FAMILY", "rp2040"))
        )
      )

    :ok =
      :uf2tool.uf2create(
        <<String.Chars.to_string(config[:app])::binary, ".uf2">>,
        family_id,
        app_start,
        <<String.Chars.to_string(config[:app])::binary, ".avm">>
      )

    IO.puts(<<"Created ", String.Chars.to_string(config[:app])::binary, ".uf2">>)
  else
    {:atomvm, :error} ->
      IO.puts("error: missing AtomVM project config.")
      :erlang.exit({:shutdown, 1})

    {:args, :error} ->
      IO.puts("Syntax: ")
      :erlang.exit({:shutdown, 1})

    {:pack, _} ->
      IO.puts("error: failed PackBEAM, uf2 file will not be created.")
      :erlang.exit({:shutdown, 1})
  end
end

Please report this bug at: https://github.com/elixir-lang/elixir/issues

    (stdlib 6.2.2.2) beam_lib.erl:899: :beam_lib.read_chunk_data/3
    (stdlib 6.2.2.2) beam_lib.erl:890: :beam_lib.read_chunk_data/2
    (elixir 1.17.0) lib/module/parallel_checker.ex:360: Module.ParallelChecker.cache_module/2
    (elixir 1.17.0) lib/module/types/of.ex:318: Module.Types.Of.remote/6
    (elixir 1.17.0) lib/enum.ex:2531: Enum."-reduce/3-lists^foldl/2-0-"/3
    (elixir 1.17.0) lib/module/types/of.ex:299: Module.Types.Of.remote/8
    (elixir 1.17.0) lib/module/types/expr.ex:333: Module.Types.Expr.of_expr/3
    (elixir 1.17.0) lib/module/types/expr.ex:125: Module.Types.Expr.of_expr/3

elixir and erlang versions (asdf)

cat .tool-versions

erlang 27.3.4.3
elixir 1.17.0-otp-27

mordv avatar Sep 19 '25 15:09 mordv

this looks weird, can you you try and remove your _build folder and go again, also it stands out you are running elixir 1.17.0 maybe try with 1.17.3..

will try to replicate something locally..

petermm avatar Sep 20 '25 08:09 petermm

can you you try and remove your _build folder and go again

Yep, that worked. Thanks!

But still I think thats a bug. Before trying asdf I was facing #57 - i.e first mix atomvm.packbeam was run on OTP 28 - that might have somehow messed up with _build.

mordv avatar Sep 20 '25 12:09 mordv