Skip to content

"Illegal instruction" issued when precompiling DataFrames, Pluto, OhMyREPL, Revise, & others, on aarch64 within both Termux/Ubuntu AND Termux/Arch. #59196

@libweirdness

Description

@libweirdness

Android 15 / Termux latest-stable / Ubuntu LTS xor Arch, both have this problem..

Both Julia 1.10 LTS and Julia 1.11

I think it is a change in either Android or in Termux, but if it affects only some packages, with the issued illegal-instruction, then .. maybe there's some way to cause that illegal-instruction to NOT be issued, so people's learning-environment can work again?

This all began happening about 3 days ago.

1st it was Pluto, so I reported it there, then it was happening in more & more packages, through the hours..

These ( & many others ) are broken, in this environment, in both distros, Ubuntu & Arch, within Termux:

  • Pluto.jl
  • Revise.jl
  • DataFrames.jl
  • About.jl
  • OhMyREPL.jl

after trying to add DataFrames, this is the error-listing:

Invalid instruction at 0x781050e074: 0x04a0e3ea

[25370] signal (4.1): Illegal instruction
in expression starting at /home/me/.julia/packages/DataFrames/kcA9R/src/other/precompile.jl:3
Array at ./range.jl:1390 [inlined]
Array at ./boot.jl:500 [inlined]
collect at ./range.jl:1393 [inlined]
|> at ./operators.jl:917
jfptr_OR.GT._20614 at /home/me/.julia/compiled/v1.10/PrettyTables/kRdcL_TzLVi.so (unknown line)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
#_print_info#63 at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:889
_print_info at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:833 [inlined]
#_print_table#64 at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:1030 [inlined]
_print_table at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:934 [inlined]
#pretty_table#62 at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:825 [inlined]
pretty_table at /home/me/.julia/packages/PrettyTables/oVZqx/src/print.jl:794 [inlined]
#_show#870 at /home/me/.julia/packages/DataFrames/kcA9R/src/abstractdataframe/show.jl:253
_show at /home/me/.julia/packages/DataFrames/kcA9R/src/abstractdataframe/show.jl:147 [inlined]
#show#871 at /home/me/.julia/packages/DataFrames/kcA9R/src/abstractdataframe/show.jl:352 [inlined]
show at /home/me/.julia/packages/DataFrames/kcA9R/src/abstractdataframe/show.jl:339
unknown function (ip: 0x7806c530cf)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
macro expansion at /home/me/.julia/packages/DataFrames/kcA9R/src/other/precompile.jl:29 [inlined]
macro expansion at /home/me/.julia/packages/PrecompileTools/L8A3n/src/workloads.jl:78 [inlined]
top-level scope at /home/me/.julia/packages/DataFrames/kcA9R/src/other/precompile.jl:102
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:925
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]
include_string at ./loading.jl:2146
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
_include at ./loading.jl:2206
include at ./Base.jl:495
jfptr_include_46628.3 at /usr/local/stow/julia-1.10.10/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
jl_f__call_latest at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/builtins.c:812
include at /home/me/.julia/packages/DataFrames/kcA9R/src/DataFrames.jl:1
unknown function (ip: 0x782bee90bb)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077                          jl_apply at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
do_call at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:126
eval_value at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:223
eval_stmt_value at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined]
eval_body at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:635
jl_interpret_toplevel_thunk at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:775
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:934
jl_eval_module_expr at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:215 [inlined]
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:736
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]
include_string at ./loading.jl:2146
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
_include at ./loading.jl:2206
include at ./Base.jl:495 [inlined]
include_package_for_output at ./loading.jl:2292
jfptr_include_package_for_output_81281.3 at /usr/local/stow/julia-1.10.10/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
do_call at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:126
eval_value at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:223
eval_stmt_value at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined]
eval_body at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:635
jl_interpret_toplevel_thunk at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/interpreter.c:775
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:934
jl_toplevel_eval_flex at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:877
ijl_toplevel_eval_in at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/toplevel.c:985
eval at ./boot.jl:385 [inlined]
include_string at ./loading.jl:2146
include_string at ./loading.jl:2156 [inlined]
exec_options at ./client.jl:321
_start at ./client.jl:557
jfptr__start_83033.3 at /usr/local/stow/julia-1.10.10/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined]
ijl_apply_generic at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/gf.c:3077
jl_apply at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined]
true_main at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/jlapi.c:582
jl_repl_entrypoint at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/src/jlapi.c:731
main at /cache/build/default-aws-aarch64-ci-0-4/julialang/julia-release-1-dot-10/cli/loader_exe.c:58
unknown function (ip: 0x782bfe20d3)
__libc_start_main at /usr/lib/libc.so.6 (unknown line)
_start at /usr/local/stow/julia-1.10.10/bin/julia (unknown line)
_start at /usr/local/stow/julia-1.10.10/bin/julia (unknown line)
Allocations: 33942996 (Pool: 33911250; Big: 31746); GC: 4

( this version was from my last test, in Arch )


Julia's apparently unable to know what CPU this tablet ( my main computer ) is using, please get Julia to use lscpu to discover the cpu it's on, in aarch64

The cores are all ARMv9a.

I've tried setting

export  JULIA_CPU_TARGET="cortex-a-510"

to control its emitted-code, but that apparently had no effect on this.

Anyways, something is broken deep, as it doesn't matter which bin-dist of Julia I'm using, xor which Termux proot-distro I'm using, either, it's broken right through.

This means that all other people also using this as a learning-means is borked, too ( I'm working on finally earning high-school math, after decades of fighting-off brain-injury: I want to earn math before I die, dang it! It's been over 4-decades of trying, now, & Julia+Pluto.jl make learning math EASY! : )

Oh, in Ubuntu this happens with gcc-14 & gcc-13,

& with clang-19 & clang-18 in Ubuntu, & clang-20 in Arch, so it isn't that, either.

& yes the sha256sums for both Julia bin-dists check out, so it isn't them that's corrupt.


To reproduce the problem:

in Android, install F-Droid

in F-Droid, install Termux ( I've also got Termux Styles & Termux API installed, if that matters )

in Termux, install Ubuntu ( quicker to get up-to a working distro, than with Arch )

proot-distro install ubuntu

once it's done, then

proot-distro login ubuntu

then you're in, as root.

Download Julia 1.10 LTS or the current one,

mkdir /usr/local/stow

untar the archive in there

apt install xstow

then in /usr/local/stow, execute

xstow julia-10*

or, for plain old stow,

stow -S julia-10*

now Julia's installed..

in a regular user ( adduser to create one ), fire-up Julia

go into package-management mode

add Pluto
add DataFrames
add About
add Revise
add OhMyREPL

ANY of those fails with "illegal instruction"!!

AND IT DIDN'T DO-SO 4 DAYS AGO.


I hope that needed-infrastructure that our world needs becomes functioning again..

it is idiocy for anybody to be learning math without both Julia & Pluto.jl


Sorry to bother you about all this, for sake of a subset of Julia's users, learners,

Salut, Namaste, & Kaizen.

_ /\ _

Metadata

Metadata

Assignees

No one assigned

    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