PackageCompiler.jl icon indicating copy to clipboard operation
PackageCompiler.jl copied to clipboard

Artifact error for compiled binaries with chinese characters in path

Open jsjie opened this issue 2 years ago • 0 comments

Only test on windows11 with julia-1.7.1. A MWE:

  1. make a package (called SelfTest) with PackageTemplate.jl
  2. add HDF5 as a dependency
  3. create the main function
function julia_main()::Cint
    println("wow")
    return 0
end
  1. create a precompile file
using SelfTest

SelfTest.julia_main()
  1. run create_app(".", "bin/test_hdf5"; precompile_execution_file=["test/precompile/run_systems.jl"], force=true, include_lazy_artifacts=true)
  2. check it works fine
PS D:\selftest> .\bin\test_hdf5\bin\SelfTest.exe 
wow
  1. mkdir 中文test in bin and move test_hdf5 into it
  2. check it fails
PS D:\selftest> .\bin\中文test\test_hdf5\bin\SelfTest.exe
fatal: error thrown and no exception handler available.
InitError(mod=:OpenSSL_jll, error=ErrorException("Artifact "OpenSSL" was not installed correctly. Try `using Pkg; Pkg.instantiate()` to re-install all missing resources."))
unknown function (ip: 000000000ecd85c2)
unknown function (ip: 000000000edecd64)
unknown function (ip: 000000000ea24f23)
jl_f__call_latest at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_f__setsuper at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
unknown function (ip: 000000000ea2317d)
jl_f__setsuper at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
unknown function (ip: 000000000ea23263)
jl_clear_implicit_imports at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_clear_implicit_imports at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_clear_implicit_imports at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_fptr_interpret_call at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
macro expansion at C:\Users\DELL\AppData\Local\Programs\Julia-1.7.1\share\julia\stdlib\v1.7\Artifacts\src\Artifacts.jl:680 [inlined]
find_artifact_dir at C:\Users\DELL\.julia\packages\JLLWrappers\QpMQW\src\wrapper_generators.jl:17
unknown function (ip: 000000000edb0676)
jl_module_run_initializer at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_get_libllvm at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
jl_init at D:\selftest\bin\中文test\test_hdf5\bin\libjulia-internal.d (unknown line)
main at D:\selftest\bin\中文test\test_hdf5\bin\SelfTest.e (unknown line)
unknown function (ip: 00000000004013c6)
unknown function (ip: 00000000004014fa)
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
  1. mkdir eng_test in bin and move test_hdf5 into it
  2. check it works fine
PS D:\selftest> .\bin\eng_test\test_hdf5\bin\SelfTest.exe
wow
  1. test directly compiled into Chinese directory create_app(".", "bin/中文"; precompile_execution_file=["test/precompile/run_systems.jl"], force=true, include_lazy_artifacts=true)
  2. check it fails
PS D:\selftest> .\bin\中文\bin\SelfTest.exe
fatal: error thrown and no exception handler available.
InitError(mod=:OpenSSL_jll, error=ErrorException("Artifact "OpenSSL" was not installed correctly. Try `using Pkg; Pkg.instantiate()` to re-install all missing resources."))
unknown function (ip: 00000000101c9e62)
unknown function (ip: 000000001025a4b4)
unknown function (ip: 000000000fe92563)
jl_f__call_latest at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_f__setsuper at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
unknown function (ip: 000000000fe8f10d)
jl_f__setsuper at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
unknown function (ip: 000000000fe8f2c3)
jl_clear_implicit_imports at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_clear_implicit_imports at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_clear_implicit_imports at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_fptr_interpret_call at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
macro expansion at C:\Users\DELL\AppData\Local\Programs\Julia-1.7.1\share\julia\stdlib\v1.7\Artifacts\src\Artifacts.jl:680 [inlined]
find_artifact_dir at C:\Users\DELL\.julia\packages\JLLWrappers\QpMQW\src\wrapper_generators.jl:17
unknown function (ip: 000000001021b486)
jl_module_run_initializer at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_get_libllvm at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
jl_init at D:\selftest\bin\中文\bin\libjulia-internal.d (unknown line)
main at D:\selftest\bin\中文\bin\SelfTest.e (unknown line)
unknown function (ip: 00000000004013c6)
unknown function (ip: 00000000004014fa)
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
  1. rename it to eng and move to eng_test
  2. check it works fine
PS D:\selftest> .\bin\eng_test\eng\bin\SelfTest.exe
wow

It seems that it is a bug with chinese characters in the path of executables.

jsjie avatar Mar 15 '23 06:03 jsjie