Julia: Precompilation with Unitful segfaults

Created on 16 Oct 2018  路  7Comments  路  Source: JuliaLang/julia

Possibly related: #29584

MWE (julia 1.0.1 downloaded binary):

module DummyMod

using Unitful
using DataFrames
using Unitful: Pa, @unit
import Unitful

@unit inchwc "inchwc" InchWC 249.082Pa false

end
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.0.1 (2018-09-29)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(DummyEnv) pkg> st
    Status `~/DummyEnv/Project.toml`
  [a93c6f00] DataFrames v0.14.1
  [5570af46] DummyMod v0.0.1 [`~/jdev/DummyMod`]
  [1986cc42] Unitful v0.12.0

(DummyEnv) pkg> st --manifest
    Status `~/DummyEnv/Manifest.toml`
  [b99e7846] BinaryProvider v0.5.2
  [324d7699] CategoricalArrays v0.4.0
  [944b1d66] CodecZlib v0.5.0
  [34da2185] Compat v1.3.0
  [a93c6f00] DataFrames v0.14.1
  [9a8bc11e] DataStreams v0.4.1
  [864edb3b] DataStructures v0.14.0
  [5570af46] DummyMod v0.0.1 [`~/jdev/DummyMod`]
  [82899510] IteratorInterfaceExtensions v0.1.1
  [682c06a0] JSON v0.19.0
  [e1d29d7a] Missings v0.3.1
  [bac558e1] OrderedCollections v1.0.2
  [189a3867] Reexport v0.2.0
  [ae029012] Requires v0.5.2
  [a2af1166] SortingAlgorithms v0.3.1
  [2913bbd2] StatsBase v0.25.0
  [3783bdb8] TableTraits v0.3.1
  [bd369af6] Tables v0.1.9
  [3bb67fe8] TranscodingStreams v0.8.1
  [1986cc42] Unitful v0.12.0
  [ea10d353] WeakRefStrings v0.5.3
  [2a0f44e3] Base64 
  [ade2ca70] Dates 
  [8bb1440f] DelimitedFiles 
  [8ba89e20] Distributed 
  [9fa8497b] Future 
  [b77e0a4c] InteractiveUtils 
  [76f85450] LibGit2 
  [8f399da3] Libdl 
  [37e2e46d] LinearAlgebra 
  [56ddb016] Logging 
  [d6f4376e] Markdown 
  [a63ad114] Mmap 
  [44cfe95a] Pkg 
  [de0858da] Printf 
  [3fa0cd96] REPL 
  [9a3f8284] Random 
  [ea8e919c] SHA 
  [9e88b42a] Serialization 
  [1a1011a3] SharedArrays 
  [6462fe0b] Sockets 
  [2f01184e] SparseArrays 
  [10745b16] Statistics 
  [8dfed614] Test 
  [cf7118a7] UUIDs 
  [4ec0a83e] Unicode 

julia> versioninfo()
Julia Version 1.0.1
Commit 0d713926f8 (2018-09-29 19:05 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.0 (ORCJIT, haswell)

julia> using DummyMod
[ Info: Precompiling DummyMod [5570af46-b12d-5143-b4e4-6f3fbba47b61]

signal (11): Segmentation fault
in expression starting at /home/cst-jean/jdev/DummyMod/src/DummyMod.jl:9
jl_compile_linfo at /buildworker/worker/package_linux64/build/src/codegen.cpp:1191
emit_invoke at /buildworker/worker/package_linux64/build/src/codegen.cpp:3094
emit_expr at /buildworker/worker/package_linux64/build/src/codegen.cpp:3893
emit_ssaval_assign at /buildworker/worker/package_linux64/build/src/codegen.cpp:3615
emit_stmtpos at /buildworker/worker/package_linux64/build/src/codegen.cpp:3801 [inlined]
emit_function at /buildworker/worker/package_linux64/build/src/codegen.cpp:6254
jl_compile_linfo at /buildworker/worker/package_linux64/build/src/codegen.cpp:1159
emit_invoke at /buildworker/worker/package_linux64/build/src/codegen.cpp:3094
emit_expr at /buildworker/worker/package_linux64/build/src/codegen.cpp:3893
emit_ssaval_assign at /buildworker/worker/package_linux64/build/src/codegen.cpp:3615
emit_stmtpos at /buildworker/worker/package_linux64/build/src/codegen.cpp:3801 [inlined]
emit_function at /buildworker/worker/package_linux64/build/src/codegen.cpp:6254
jl_compile_linfo at /buildworker/worker/package_linux64/build/src/codegen.cpp:1159
jl_fptr_trampoline at /buildworker/worker/package_linux64/build/src/gf.c:1796
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:324
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:430
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:363 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:682
jl_interpret_toplevel_thunk_callback at /buildworker/worker/package_linux64/build/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7f0d77a2734f)
unknown function (ip: 0x10)
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:804
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:813
jl_eval_module_expr at /buildworker/worker/package_linux64/build/src/toplevel.c:233
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:651
jl_parse_eval_all at /buildworker/worker/package_linux64/build/src/ast.c:838
jl_load at /buildworker/worker/package_linux64/build/src/toplevel.c:847
include at ./boot.jl:317 [inlined]
include_relative at ./loading.jl:1041
include at ./sysimg.jl:29
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:324
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:430
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:363 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:682
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:613
jl_interpret_toplevel_thunk_callback at /buildworker/worker/package_linux64/build/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7f0d777997cf)
unknown function (ip: 0x2)
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:804
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:813
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/builtins.c:622
eval at ./boot.jl:319 [inlined]
eval at ./client.jl:389
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
top-level scope at ./none:3
jl_fptr_trampoline at /buildworker/worker/package_linux64/build/src/gf.c:1831
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:807
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/builtins.c:622
eval at ./boot.jl:319
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
macro expansion at ./logging.jl:317 [inlined]
exec_options at ./client.jl:219
_start at ./client.jl:421
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
jl_apply at /buildworker/worker/package_linux64/build/ui/../src/julia.h:1537 [inlined]
true_main at /buildworker/worker/package_linux64/build/ui/repl.c:112
main at /buildworker/worker/package_linux64/build/ui/repl.c:233
__libc_start_main at /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
_start at /home/cst-jean/julia-1.0.1/bin/julia (unknown line)
Allocations: 5192292 (Pool: 5191671; Big: 621); GC: 8
ERROR: Failed to precompile DummyMod [5570af46-b12d-5143-b4e4-6f3fbba47b61] to /home/cst-jean/.julia/compiled/v1.0/DummyMod/KbqDT.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] macro expansion at ./logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at ./loading.jl:1187
 [4] _require(::Base.PkgId) at ./logging.jl:311
 [5] require(::Base.PkgId) at ./loading.jl:855
 [6] macro expansion at ./logging.jl:311 [inlined]
 [7] require(::Module, ::Symbol) at ./loading.jl:837
bug precompile

Most helpful comment

Maybe the pressure it too high?

All 7 comments

If I turn 249.082Pa into 0.249082kPa, it works fine.

Maybe the pressure it too high?

Should try this again after #31047.

I can replicate on 1.0.3 but not on 1.1, so either this was fixed previously or it's dependent on some other piece of state not represented here.

I will see if backporting this to 1.0 fixes this MWE, and I will also try to run more complicated Unitful stuff that previously segfaulted.

Adding that commit did not fix the issue on 1.0.3, so it must be separate issue. I will git bisect to try to figure out what fixed it.

A bisect between git merge-base master release-1.1 and v1.1.0 showed 6329be9aab7c59cc6550e19ae11e32a31fe7ced2 fixed this, which doesn't seem related. Perhaps there's some nondeterminism involved, unless you think that commit could have done something?

A bisect between git merge-base master release-1.1 and v1.1.0 showed 6329be9aab7c59cc6550e19ae11e32a31fe7ced2 fixed this. Same with a bisect between the same start point and master (the commit there was the original, 735d75534aed2740f8fa952d27dd8dc840ea010a). That commit does not seem related. Can you think of any way it could have actually fixed the issue here?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

m-j-w picture m-j-w  路  3Comments

StefanKarpinski picture StefanKarpinski  路  3Comments

omus picture omus  路  3Comments

felixrehren picture felixrehren  路  3Comments

ararslan picture ararslan  路  3Comments