Extension is updated?

I noticed that a version 1.146.2 of the VS Code extension was released a few days ago. Is there a summary of what’s updated?

I’m still pinning myself to 1.127.2, since the version after that broke test-running (see VS Code won't run tests anymore). If that’s supposed to be fixed now, I’ll try the new version.

2 Likes

I tried out the 1.146.2 release today, so far it seems like it’s fixed the testing bugs from 1.140.

I spoke too soon, I’m seeing hangs again. At least this time there are some errors in the “Test Tesults” panel - starting out like so:

[91165] signal (15): Terminated: 15
in expression starting at /Users/kwilliams/.vscode/extensions/julialang.language-julia-1.146.2/scripts/packages/TestItemControllers/testprocess/app/testserver_main.jl:19
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
nnable
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] schedule(t::Task, arg::Any; error::Bool)
    @ Base ./task.jl:871
  [3] schedule
    @ ./task.jl:863 [inlined]
  [4] uv_writecb_task(req::Ptr{Nothing}, status::Int32)
    @ Base ./stream.jl:1166
  [5] poptask(W::Base.IntrusiveLinkedListSynchronized{Task})
    @ Base ./task.jl:999
  [6] wait()
    @ Base ./task.jl:1008
  [7] uv_write(s::Base.PipeEndpoint, p::Ptr{UInt8}, n::UInt64)
    @ Base ./stream.jl:1048
  [8] unsafe_write(s::Base.PipeEndpoint, p::Ptr{UInt8}, n::UInt64)
    @ Base ./stream.jl:1120
  [9] unsafe_write
    @ ./io.jl:698 [inlined]
 [10] write(s::Base.PipeEndpoint, a::Vector{UInt8})
    @ Base ./io.jl:721
 [11] handle_message(logger::Logging.ConsoleLogger, level::Base.CoreLogging.LogLevel, message::Any, _module::Any, group::Any, id::Any, filepath::Any, line::Any; kwargs...)
    @ Logging ~/.julia/juliaup/julia-1.10.9+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/Logging/src/ConsoleLogger.jl:178
 [12] handle_message(logger::Logging.ConsoleLogger, level::Base.CoreLogging.LogLevel, message::Any, _module::Any, group::Any, id::Any, filepath::Any, line::Any)
    @ Logging ~/.julia/juliaup/julia-1.10.9+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/Logging/src/ConsoleLogger.jl:106
 [13] #invokelatest#2
    @ ./essentials.jl:892 [inlined]
 [14] invokelatest
    @ ./essentials.jl:889 [inlined]
 [15] macro expansion
    @ ./logging.jl:377 [inlined]
 [16] temp_cleanup_purge(; force::Bool)
    @ Base.Filesystem ./file.jl:549
 [17] temp_cleanup_purge
    @ ./file.jl:537 [inlined]
 [18] (::Base.var"#951#952")()
    @ Base ./initdefs.jl:366
 [19] _atexit(exitcode::Int32)
    @ Base ./initdefs.jl:428
  Activating new project at `/var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/jl_Txhadu`
   Resolving package versions...
kevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 80911676 (Pool: 80807110; Big: 104566); GC: 67
kevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 103573488 (Pool: 103438497; Big: 134991); GC: 63
┌ Warning: Failed to clean up temporary path "/var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/jl_OHsqO7"
│ ErrorException("schedule: Task not runnable")
└ @ Base.Filesystem file.jl:549
schedule: Task not runnablekevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 105242613 (Pool: 105112657; Big: 129956); GC: 75
┌ Warning: Failed to clean up temporary path "/var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/jl_wqlEA9"
│ ErrorException("schedule: Task not runnable")
└ @ Base.Filesystem file.jl:549
schedule: Task not runnablekevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 131856809 (Pool: 131687481; Big: 169328); GC: 71
kevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 137510072 (Pool: 137327213; Big: 182859); GC: 103
kevent at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
Allocations: 90945099 (Pool: 90830937; Big: 114162); GC: 62
...

So I’ll be reinstalling 1.127.2.

1 Like

Hm, that actually looks like a Julia bug to me… What Julia version are you using?

Also, there is a newer version of the extension as a pre-release out right now (v1.147) and in general I’m pushing out new versions there a lot that fix more and more test item stuff, its the thing I’m focused on right now. So maybe ideally at the moment try the pre-release versions to get the latest test item fixes. But I don’t think your error would be explained/fixed by the newer version…

2 Likes

I’m using 1.10.9+0.aarch64.apple.darwin14 for my project, but I think VS Code is finding 1.11.5+0.aarch64.apple.darwin14 on my machine and using that for the test daemon processes? I’m not quite sure how to tell.

[EDIT] Actually I see Logging ~/.julia/juliaup/julia-1.10.9+0.aarch64.apple.darwin14 in the error output, so I guess it’s using my juliaup default of 1.10.9.

It will always use the Juliaup release channel for the coordinator, and then whatever you configured as the default in Juliaup to run the actual tests.

Could you try to run the tests with Julia 1.11 as the default? If this is indeed a Julia bug, maybe it has been fixed in the meantime…

I didn’t get a chance to try Julia 1.11, but I did see that version 1.149.2 of the extension was released in the meantime - I installed that and have put it through a few paces (still with Julia 1.10) and so far it looks good.

I’ve now had a chance to try Julia 1.11 with version 1.149.2 of the extension. Still getting trouble. A test run is currently hung up before executing any tests. I captured the following from the “Julia Test Item Controller” output:

[ Info: New env, lets figure out whether we need to precompile the test environment
[ Info: Julia version is new enough
[ Info: Stealing 7 test items from 783c2c12-e818-4506-8ae1-276bf87bd686 for 9482e969-2591-48b4-ba28-cc23a69ee7b2.
[ Info: Stealing 3 test items from 783c2c12-e818-4506-8ae1-276bf87bd686 for 2aaa00a2-95c0-4a5a-9ebd-5a0018d76e81.
[ Info: Stealing 3 test items from 9482e969-2591-48b4-ba28-cc23a69ee7b2 for 7fa1f651-1f84-40a0-b90e-d47da50bba8b.
[ Info: Stealing 3 test items from 251994c6-eaa4-4cdc-a857-dbc34b16ec63 for 7fa1f651-1f84-40a0-b90e-d47da50bba8b.
[ Info: Stealing 1 test items from 7fa1f651-1f84-40a0-b90e-d47da50bba8b for 538d7a03-e30f-4f06-9d79-00162b0c7191.
[ Info: Stealing 1 test items from bb5d552d-5421-47cc-a09f-446ef8cff131 for 538d7a03-e30f-4f06-9d79-00162b0c7191.
[ Info: Stealing 1 test items from d1f90ea9-8b50-43b1-a2e9-73553d575894 for 783c2c12-e818-4506-8ae1-276bf87bd686.
[ Info: Stealing 1 test items from 7fa1f651-1f84-40a0-b90e-d47da50bba8b for 9482e969-2591-48b4-ba28-cc23a69ee7b2.
[ Info: Stealing 1 test items from bb5d552d-5421-47cc-a09f-446ef8cff131 for 9482e969-2591-48b4-ba28-cc23a69ee7b2.
[ Info: Stealing 1 test items from 5ccf5995-5394-449c-8dbd-c655002c6fce for bb5d552d-5421-47cc-a09f-446ef8cff131.
[ Info: Stealing 1 test items from d1f90ea9-8b50-43b1-a2e9-73553d575894 for 7fa1f651-1f84-40a0-b90e-d47da50bba8b.
[ Info: Nothing to steal for 0023b44a-0fb1-40e9-b0ee-7290b99fb90e, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/workspace_test.jl:20).
[ Info: Nothing to steal for 538d7a03-e30f-4f06-9d79-00162b0c7191, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/proposals_test.jl:6).
[ Info: Nothing to steal for 7fa1f651-1f84-40a0-b90e-d47da50bba8b, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/sme_models_test.jl:4).
[ Info: Nothing to steal for d1f90ea9-8b50-43b1-a2e9-73553d575894, returning to pool (skipped_stolen: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/ptdf_test.jl:1).
[ Info: Nothing to steal for bb5d552d-5421-47cc-a09f-446ef8cff131, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/objective_test.jl:5).
[ Info: Nothing to steal for 2aaa00a2-95c0-4a5a-9ebd-5a0018d76e81, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/workspace_test.jl:11).
[ Info: Nothing to steal for 251994c6-eaa4-4cdc-a857-dbc34b16ec63, returning to pool (skipped_stolen: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/sme_models_test.jl:5).
[ Info: Nothing to steal for 9482e969-2591-48b4-ba28-cc23a69ee7b2, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/ptdf_test.jl:6).
[ Info: Nothing to steal for 783c2c12-e818-4506-8ae1-276bf87bd686, returning to pool (passed: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/ptdf_test.jl:1).
[ Info: Nothing to steal for 5ccf5995-5394-449c-8dbd-c655002c6fce, returning to pool (skipped_stolen: file:///Users/kwilliams/git/transmission/TFOpt.jl/test/objective_test.jl:5).
[ Info: Creating new test run
┌ Info: Test environment
│ 
│ Project Uri: nothing
│ Package Uri: file:///Users/kwilliams/git/transmission/TFOpt.jl
│ Package Name: TFOpt
│ Julia command: julia
│ Julia Num Threads: missing
│ Mode: Normal
│ Env: Dict{String, Union{Nothing, String}}()
│ 
└ We need 10 procs, there are 10 processes, of which 10 are idle.
[ Info: New env, lets figure out whether we need to precompile the test environment
[ Info: Julia version is new enough
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
ERROR: InvalidStateException: Channel is closed.
Stacktrace:
 [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
   @ Base ./task.jl:958
 [2] wait()
   @ Base ./task.jl:1022
 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)
   @ Base ./condition.jl:130
 [4] wait
   @ ./condition.jl:125 [inlined]
 [5] take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})
   @ Base ./channels.jl:493
 [6] take!
   @ ./channels.jl:487 [inlined]
 [7] get_next_message
   @ ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/core.jl:330 [inlined]
 [8] start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:634
 [9] (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:165
ERROR: InvalidStateException: Channel is closed.
Stacktrace:
 [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
   @ Base ./task.jl:958
 [2] wait()
   @ Base ./task.jl:1022
 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)
   @ Base ./condition.jl:130
 [4] wait
   @ ./condition.jl:125 [inlined]
 [5] take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})
   @ Base ./channels.jl:493
 [6] take!
   @ ./channels.jl:487 [inlined]
 [7] get_next_message
   @ ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/core.jl:330 [inlined]
 [8] start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:634
 [9] (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:165
ERROR: InvalidStateException: Channel is closed.
Stacktrace:
 [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
   @ Base ./task.jl:958
 [2] wait()
   @ Base ./task.jl:1022
 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)ERROR: 
InvalidStateException:    @Channel is closed. 
Stacktrace:Base
  ./[1]condition.jl:130 try_yieldto(undo::typeof(Base.ensure_rescheduled))

    @[4]  Basewait 
./   @task.jl:958 ./
condition.jl:125  [inlined][2]
  wait()[5]
    @take_buffered(c::Channel{TestItemControllers.JSONRPC.Request}) 
Base   @  ./Basetask.jl:1022 ./
channels.jl:493 [3]
  wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)[6]
    @take! 
Base   @  ././condition.jl:130channels.jl:487 [inlined]

 [4]  wait[7]
    @get_next_message 
./   @condition.jl:125  [inlined]~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/
core.jl:330  [inlined][5]
  take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})[8]
    @start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken) 
Base   @  ./TestItemControllerschannels.jl:493 ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
testprocess.jl:634 [6]
  take![9]
    @(::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})() 
./   @channels.jl:487  [inlined]TestItemControllers
  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/[7]testprocess.jl:165 get_next_message

   @ ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/core.jl:330 [inlined]
 [8] start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:634
 [9] (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:165
ERROR: InvalidStateException: Channel is closed.
Stacktrace:
 [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
   @ Base ./task.jl:958
 [2] wait()
   @ Base ./task.jl:1022
 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)
   @ Base ./condition.jl:130
 [4] wait
   @ ./condition.jl:125 [inlined]
 [5] take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})
   @ Base ./channels.jl:493
 [6] take!
   @ ./channels.jl:487 [inlined]
 [7] get_next_message
   @ ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/core.jl:330 [inlined]
 [8] start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:634
 [9] (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:165
ERROR: InvalidStateException: Channel is closed.
Stacktrace:
 [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
   @ Base ./task.jl:958
 [2] wait()
   @ Base ERROR: ./InvalidStateException: task.jl:1022Channel is closed.
Stacktrace:

 [1]  try_yieldto(undo::typeof(Base.ensure_rescheduled))[3]
    @wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) 
Base   @  ./Basetask.jl:958 ./
condition.jl:130 [2]
  wait()[4]
    @wait 
Base   @  ././task.jl:1022condition.jl:125 [inlined]

 [3]  wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)[5]
    @take_buffered(c::Channel{TestItemControllers.JSONRPC.Request}) 
Base   @  ./Basecondition.jl:130 ./
channels.jl:493 [4]
  wait[6]
    @take! 
./   @condition.jl:125  [inlined]./
channels.jl:487  [inlined][5]
  take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})[7]
    @get_next_message 
Base   @  ./~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/channels.jl:493ERROR: core.jl:330InvalidStateException:  [inlined]
Channel is closed.

Stacktrace:
 [1]  try_yieldto(undo::typeof(Base.ensure_rescheduled))[8]
    @ start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken) [6]
Base    @ take! ./
TestItemControllerstask.jl:958   @  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
./testprocess.jl:634 channels.jl:487[2] [inlined]
 
 wait()[9]
    @ (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})() [7]
Base    @ get_next_message ./
TestItemControllerstask.jl:1022   @  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/testprocess.jl:165 core.jl:330[3] [inlined]
 
wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) 
[8]   @  start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)Base
    @./ condition.jl:130TestItemControllers 
~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/ testprocess.jl:634[4] 
wait 
[9]   @  (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()./
condition.jl:125   @ [inlined] 
TestItemControllers  [5]~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/ testprocess.jl:165take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})

   @ Base ./channels.jl:493
 [6] take!
   @ ./channels.jl:487 [inlined]
 [7] ERROR: get_next_messageInvalidStateException: 
Channel is closed.   @
Stacktrace: 
~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/ core.jl:330[1] [inlined] 
try_yieldto(undo::typeof(Base.ensure_rescheduled)) 
[8]   @  start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)Base
    @./ task.jl:958TestItemControllers 
~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/ testprocess.jl:634[2] 
wait() 
[9]   @  (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()Base
    @ERROR: ./ InvalidStateException: task.jl:1022TestItemControllersChannel is closed. 
Stacktrace:
~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
testprocess.jl:165 [1]
  try_yieldto(undo::typeof(Base.ensure_rescheduled))[3]
    @wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) 
Base   @  ./Basetask.jl:958 ./
condition.jl:130 [2]
  wait()[4]
    @wait 
Base   @  ././task.jl:1022condition.jl:125 [inlined]

 [3]  wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)[5]
    @take_buffered(c::Channel{TestItemControllers.JSONRPC.Request}) 
Base   @  ./Basecondition.jl:130 ./
channels.jl:493 [4]
  wait[6]
    @take! 
./   @condition.jl:125  [inlined]./
channels.jl:487  [inlined][5]
  take_buffered(c::Channel{TestItemControllers.JSONRPC.Request})[7]
    @get_next_message 
Base   @  ./~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/channels.jl:493core.jl:330 [inlined]

 [6]  take![8]
    @start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken) 
./   @channels.jl:487  [inlined]TestItemControllers
  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/[7]testprocess.jl:634 get_next_message

    @[9]  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/packages/JSONRPC/src/(::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()core.jl:330
 [inlined]   @
  TestItemControllers[8]  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/start(testprocess_id::String, controller_msg_channel::Channel{Any}, testprocess_msg_channel::Channel{Any}, env::TestItemControllers.TestEnvironment, debug_pipe_name::String, error_handler_file::String, crash_reporting_pipename::String, token::TestItemControllers.CancellationTokens.CancellationToken)testprocess.jl:165
   @
 TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:634
 [9] (::TestItemControllers.var"#54#64"{TestItemControllers.CancellationTokens.CancellationTokenSource, String, Channel{Any}, TestItemControllers.TestEnvironment, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:165
ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.
Stacktrace:
 [1] 
Stacktrace:error(s::String)

    @[1]  Base
Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base
 error(s::String) [2]
./    @error.jl:35 (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() [2]
Base
    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ./[2]
TestItemControllerserror.jl:35    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @  (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
[2]
TestItemControllerstestprocess.jl:203    @ (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})() ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/

TestItemControllerstestprocess.jl:203   @  ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
TestItemControllerstestprocess.jl:203 ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/
testprocess.jl:203
ERROR: Invalid state transition from running_tests.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] (::TestItemControllers.var"#51#61"{Channel{Any}, TestItemControllers.TestEnvironment, Bool, String, String, String, Channel{Any}, String})()
   @ TestItemControllers ~/.vscode/extensions/julialang.language-julia-1.149.2/scripts/packages/TestItemControllers/src/testprocess.jl:203

I had also started to see hanging with Julia 1.10, which is what prompted me to try 1.11.

1 Like

@Ken_Williams I just published pre release version v1.150 of the extension, can you try again? I fixed at least some of the earlier bugs that you showed there, unclear whether that will get rid of the problem entirely.

Thanks @davidanthoff , I’ve installed the latest pre-release (1.152.1 now) and I haven’t put it through a ton of paces yet, but it seems to be behaving well so far. I do like the free-order execution of unit tests, that seems to get big sets of tests running more quickly overall.

I’ll keep it installed and report back if I’m hitting any problems, thanks for the ping.

Well, bummer - I encountered a hang today, so I’ll revert again.

I launched unit tests, went away for a little while (because I knew it would have to re-precompile, I made a change to a struct), and when I came back I discovered it was still trying to kick off tests (taking > 2500s, tests usually take anywhere from 5s to 120s depending on precompilation):

In the Julia Test Item Controller tab I see a few errors:

...
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Revise could not handle changes or test env was changed, restarting process
[ Info: Julia version is new enough
[ Info: Revise could not handle changes or test env was changed, restarting process
ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: ERROR: Invalid state transition from testrun_activating.Invalid state transition from testrun_starting.Invalid state transition from testrun_activating.Invalid state transition from testrun_starting.Invalid state transition from testrun_activating.Invalid state transition from testrun_starting.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.Invalid state transition from testrun_activating.
Stacktrace:
 [1] 
Stacktrace:error(s::String)

    @[1]  Base
Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base

Stacktrace:error(s::String) 

./    @error.jl:35[1]  Base
...

Additionally, after I quit VS Code I see a bunch of these testserver_main.jl processes hanging around and I need to kill them manually:

% ps auxww | grep julia
kwilliams        82916   0.0  0.4 412733808 125008   ??  S    10:34AM   0:07.46 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depwarn=no --code-coverage=none /Users/kwilliams/.vscode/extensions/julialang.language-julia-1.152.1/scripts/packages/TestItemControllers/src/../testprocess/app/testserver_main.jl /var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/jl_KzuLKTAX2v /var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/jl_UVsBmL47mZ /Users/kwilliams/.vscode/extensions/julialang.language-julia-1.152.1/scripts/error_handler.jl /var/folders/d5/xj384ymn2r551n6yk4mwl2ch0000gp/T/vsc-jl-cr-e6e15246-120f-411e-adab-c74cf51b09b3
...

@davidanthoff I think when I get into a hung state, it has something to do with old test processes hanging around, maybe? It seems to happen more when I run tests, then go away for a while, come back, and run tests again. I see in the Test Results output several messages like this:

[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching
[ Info: Julia test item process launching

which is surprising because I thought those processes had already been started previously.

In the terminal, if I do ps auxww | grep 'ju[l]ia' | less -S, I see this:

kwilliams        48942 100.0  2.5 413206240 844048   ??  R     4:47PM   7:12.25 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        49759   0.0  1.3 413361168 449984   ??  S     4:48PM   0:29.53 /Users/kwilliams/.julia/juliaup/julia-1.11.6+0.aarch64.apple.darwin14/bin/julia --startup-file=no --history-file=no --depwarn=no main.jl /User
kwilliams        48844   0.0  1.1 412734160 364288   ??  S     4:47PM   0:11.39 /Users/kwilliams/.julia/juliaup/julia-1.11.6+0.aarch64.apple.darwin14/bin/julia --startup-file=no --history-file=no --depwarn=no /Users/kwilli
kwilliams        58036   0.0  0.8 412276800 258608   ??  S     4:59PM   0:03.38 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        58025   0.0  0.8 412333120 255536   ??  S     4:59PM   0:02.99 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        58014   0.0  0.7 412267584 228560   ??  S     4:59PM   0:03.00 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        58003   0.0  0.7 412268608 228528   ??  S     4:59PM   0:02.92 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57990   0.0  1.4 412666768 470416   ??  S     4:59PM   0:07.42 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57980   0.0  1.6 413368528 529056   ??  S     4:59PM   0:07.04 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57969   0.0  1.9 412668048 646880   ??  S     4:59PM   0:08.08 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57958   0.0  1.9 412667408 628896   ??  S     4:59PM   0:08.12 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57942   0.0  0.8 412264384 263600   ??  S     4:59PM   0:02.93 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw
kwilliams        57933   0.0  0.9 412341312 296592   ??  S     4:59PM   0:02.88 /Users/kwilliams/.julia/juliaup/julia-1.10.10+0.aarch64.apple.darwin14/bin/julia --check-bounds=yes --startup-file=no --history-file=no --depw

Two things to notice: 1) the 100.0 at the top is in the %CPU column, so something’s not happy in that process. 2) there are roughly two start times (STARTED column) in the data, 4:47PM and 4:59PM. 4:47 is the first time I ran tests, 4:59 is the second time.