Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unlock count must match lock count #179

Open
qinsoon opened this issue Sep 30, 2024 · 1 comment
Open

unlock count must match lock count #179

qinsoon opened this issue Sep 30, 2024 · 1 comment
Labels
bug Something isn't working workaround

Comments

@qinsoon
Copy link
Member

qinsoon commented Sep 30, 2024

First seen in https://github.com/mmtk/mmtk-julia/actions/runs/11097983519/job/30830015431?pr=170 in #170 when running test/threads.

Error During Test at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:907
  Test threw exception
  Expression: fib34666(25) == 75025
  TaskFailedException
  Stacktrace:
    [1] wait
      @ ./task.jl:349 [inlined]
    [2] fetch
      @ ./task.jl:369 [inlined]
    [3] (::var"#f#173"{Channel{Any}})(x::Int64)
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
    [4] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:905 [inlined]
    [5] macro expansion
      @ ./task.jl:476 [inlined]
    [6] fib34666(x::Int64)
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:897
    [7] top-level scope
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/usr/share/julia/stdlib/v1.9/Test/src/Test.jl:478
    [8] include(mod::Module, _path::String)
      @ Base ./Base.jl:457
    [9] exec_options(opts::Base.JLOptions)
      @ Base ./client.jl:307
   [10] _start()
      @ Base ./client.jl:522
  
      nested task error: TaskFailedException
      Stacktrace:
       [1] wait
         @ ./task.jl:349 [inlined]
       [2] fetch
         @ ./task.jl:369 [inlined]
       [3] (::var"#f#173"{Channel{Any}})(x::Int64)
         @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
       [4] (::var"#172#175"{Int64})()
         @ Main ./threadingconstructs.jl:411
      
          nested task error: TaskFailedException
          Stacktrace:
           [1] wait
             @ ./task.jl:349 [inlined]
           [2] fetch
             @ ./task.jl:369 [inlined]
           [3] (::var"#f#173"{Channel{Any}})(x::Int64)
             @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
           [4] (::var"#172#175"{Int64})()
             @ Main ./threadingconstructs.jl:411
          
              nested task error: TaskFailedException
              Stacktrace:
               [1] wait
                 @ ./task.jl:349 [inlined]
               [2] fetch
                 @ ./task.jl:369 [inlined]
               [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                 @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
               [4] (::var"#172#175"{Int64})()
                 @ Main ./threadingconstructs.jl:411
              
                  nested task error: TaskFailedException
                  Stacktrace:
                   [1] wait
                     @ ./task.jl:349 [inlined]
                   [2] fetch
                     @ ./task.jl:369 [inlined]
                   [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                     @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                   [4] (::var"#172#175"{Int64})()
                     @ Main ./threadingconstructs.jl:411
                  
                      nested task error: TaskFailedException
                      Stacktrace:
                       [1] wait
                         @ ./task.jl:349 [inlined]
                       [2] fetch
                         @ ./task.jl:369 [inlined]
                       [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                         @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                       [4] (::var"#172#175"{Int64})()
                         @ Main ./threadingconstructs.jl:411
                      
                          nested task error: TaskFailedException
                          Stacktrace:
                           [1] wait
                             @ ./task.jl:349 [inlined]
                           [2] fetch
                             @ ./task.jl:369 [inlined]
                           [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                             @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                           [4] (::var"#171#174"{Int64})()
                             @ Main ./threadingconstructs.jl:411
                          
                              nested task error: TaskFailedException
                              Stacktrace:
                               [1] wait
                                 @ ./task.jl:349 [inlined]
                               [2] fetch
                                 @ ./task.jl:369 [inlined]
                               [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                 @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                               [4] (::var"#172#175"{Int64})()
                                 @ Main ./threadingconstructs.jl:411
                              
                                  nested task error: TaskFailedException
                                  Stacktrace:
                                   [1] wait
                                     @ ./task.jl:349 [inlined]
                                   [2] fetch
                                     @ ./task.jl:369 [inlined]
                                   [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                     @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                   [4] (::var"#172#175"{Int64})()
                                     @ Main ./threadingconstructs.jl:411
                                  
                                      nested task error: TaskFailedException
                                      Stacktrace:
                                       [1] wait
                                         @ ./task.jl:349 [inlined]
                                       [2] fetch
                                         @ ./task.jl:369 [inlined]
                                       [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                         @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                       [4] (::var"#172#175"{Int64})()
                                         @ Main ./threadingconstructs.jl:411
                                      
                                          nested task error: TaskFailedException
                                          Stacktrace:
                                           [1] wait
                                             @ ./task.jl:349 [inlined]
                                           [2] fetch
                                             @ ./task.jl:369 [inlined]
                                           [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                             @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                           [4] (::var"#171#174"{Int64})()
                                             @ Main ./threadingconstructs.jl:411
                                          
                                              nested task error: TaskFailedException
                                              Stacktrace:
                                               [1] wait
                                                 @ ./task.jl:349 [inlined]
                                               [2] fetch
                                                 @ ./task.jl:369 [inlined]
                                               [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                 @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                               [4] (::var"#172#175"{Int64})()
                                                 @ Main ./threadingconstructs.jl:411
                                              
                                                  nested task error: TaskFailedException
                                                  Stacktrace:
                                                   [1] wait
                                                     @ ./task.jl:349 [inlined]
                                                   [2] fetch
                                                     @ ./task.jl:369 [inlined]
                                                   [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                     @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                   [4] (::var"#172#175"{Int64})()
                                                     @ Main ./threadingconstructs.jl:411
                                                  
                                                      nested task error: TaskFailedException
                                                      Stacktrace:
                                                       [1] wait
                                                         @ ./task.jl:349 [inlined]
                                                       [2] fetch
                                                         @ ./task.jl:369 [inlined]
                                                       [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                         @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                       [4] (::var"#172#175"{Int64})()
                                                         @ Main ./threadingconstructs.jl:411
                                                      
                                                          nested task error: TaskFailedException
                                                          Stacktrace:
                                                           [1] wait
                                                             @ ./task.jl:349 [inlined]
                                                           [2] fetch
                                                             @ ./task.jl:369 [inlined]
                                                           [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                             @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                           [4] (::var"#172#175"{Int64})()
                                                             @ Main ./threadingconstructs.jl:411
                                                          
                                                              nested task error: TaskFailedException
                                                              Stacktrace:
                                                               [1] wait
                                                                 @ ./task.jl:349 [inlined]
                                                               [2] fetch
                                                                 @ ./task.jl:369 [inlined]
                                                               [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                                 @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                               [4] (::var"#171#174"{Int64})()
                                                                 @ Main ./threadingconstructs.jl:411
                                                              
                                                                  nested task error: TaskFailedException
                                                                  Stacktrace:
                                                                   [1] wait
                                                                     @ ./task.jl:349 [inlined]
                                                                   [2] fetch
                                                                     @ ./task.jl:369 [inlined]
                                                                   [3] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                                     @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                                   [4] (::var"#171#174"{Int64})()
                                                                     @ Main ./threadingconstructs.jl:411
                                                                  
                                                                      nested task error: unlock count must match lock count
                                                                      Stacktrace:
                                                                       [1] error(s::String)
                                                                         @ Base ./error.jl:35
                                                                       [2] unlock
                                                                         @ ./locks-mt.jl:66 [inlined]
                                                                       [3] unlock(c::Base.GenericCondition{SpinLock})
                                                                         @ Base ./condition.jl:74
                                                                       [4] _wait(t::Task)
                                                                         @ Base ./task.jl:311
                                                                       [5] wait
                                                                         @ ./task.jl:347 [inlined]
                                                                       [6] fetch
                                                                         @ ./task.jl:369 [inlined]
                                                                       [7] (::var"#f#173"{Channel{Any}})(x::Int64)
                                                                         @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:903
                                                                       [8] (::var"#172#175"{Int64})()
                                                                         @ Main ./threadingconstructs.jl:411
ERROR: LoadError: There was an error during testing
in expression starting at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/threads_exec.jl:907
threads    (1) |         failed at 2024-09-30T03:19:00.790
Error During Test at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:21
  Got exception outside of a @test
  LoadError: failed process: Process(setenv(`/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/bin/julia -Cnative -J/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/julia/sys.so --depwarn=error --check-bounds=yes -g1 --startup-file=no --depwarn=error --rr-detach --startup-file=no threads_exec.jl`,["MFLAGS=-s", "PATH=/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin", "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1", "GITHUB_RUN_NUMBER=543", "GITHUB_REF_NAME=170/merge", "RUNNER_ARCH=X64", "MAKEFLAGS=s -- JULIA_BUILD_MODE=release", "MAKEOVERRIDES=\${-*-command-variables-*-}", "PERFLOG_LOCATION_SETTING=RUNNER_PERFLOG", "BUILDROOT=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia", "STATS_TIS=mining", "GOROOT_1_20_X64=/opt/hostedtoolcache/go/1.20.14/x64", "JULIA_BUILD_MODE=release", "ACCEPT_EULA=Y", "JULIA_TEST_MAXRSS_MB=15990", "GOROOT_1_21_X64=/opt/hostedtoolcache/go/1.21.13/x64", "ANT_HOME=/usr/share/ant", "RUNNER_USER=runner", "LEIN_HOME=/usr/local/lib/lein", "GITHUB_REPOSITORY_ID=523178566", "GITHUB_ACTOR=qinsoon", "GITHUB_WORKFLOW_REF=mmtk/mmtk-julia/.github/workflows/ci.yml@refs/pull/170/merge", "ANDROID_NDK_LATEST_HOME=/usr/local/lib/android/sdk/ndk/27.1.12297006", "MMTK_JULIA_DIR=/home/runner/work/mmtk-julia/mmtk-julia/.github/scripts/../..", "RUNNER_ENVIRONMENT=github-hosted", "SYSTEMD_EXEC_PID=608", "OPENBLAS_DEFAULT_NUM_THREADS=1", "STATS_D_D=false", "USER=runner", "CONDA=/usr/share/miniconda", "STATS_VMFE=true", "VCPKG_INSTALLATION_ROOT=/usr/local/share/vcpkg", "GITHUB_REF_PROTECTED=false", "GITHUB_API_URL=https://api.github.com", "GITHUB_SHA=ff4f3a247e4ccea64a8db1e40ebc0581368de071", "GITHUB_ACTIONS=true", "STATS_V3PS=true", "GITHUB_RUN_ATTEMPT=1", "MAKELEVEL=2", "ANDROID_SDK_ROOT=/usr/local/lib/android/sdk", "JAVA_HOME=/usr/lib/jvm/temurin-11-jdk-amd64", "SWIFT_PATH=/usr/share/swift/usr/bin", "STATS_EXT=true", "GITHUB_ENV=/home/runner/work/_temp/_runner_file_commands/set_env_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "JAVA_HOME_17_X64=/usr/lib/jvm/temurin-17-jdk-amd64", "RUNNER_PERFLOG=/home/runner/perflog", "RUNNER_NAME=GitHub Actions 59", "EDGEWEBDRIVER=/usr/local/share/edge_driver", "GITHUB_RUN_ID=1109798[3519](https://github.com/mmtk/mmtk-julia/actions/runs/11097983519/job/30830015431?pr=170#step:6:3520)", "ImageOS=ubuntu22", "MMTK_MAX_HSIZE_G=4", "NVM_DIR=/home/runner/.nvm", "GHCUP_INSTALL_BASE_PREFIX=/usr/local", "GITHUB_HEAD_REF=pin-globally-rooted-symbols", "GITHUB_RETENTION_DAYS=90", "GITHUB_SERVER_URL=https://github.com", "GITHUB_OUTPUT=/home/runner/work/_temp/_runner_file_commands/set_output_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "STATS_UE=true", "STATS_BLT=true", "GITHUB_JOB=build-test-other", "DEBIAN_FRONTEND=noninteractive", "RUNNER_TRACKING_ID=github_b98b06c0-f1b9-4889-a7e4-0782db0fa73d", "RUNNER_TOOL_CACHE=/opt/hostedtoolcache", "AZURE_EXTENSION_DIR=/opt/az/azcliextensions", "HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS=3650", "CHROMEWEBDRIVER=/usr/local/share/chromedriver-linux64", "GITHUB_WORKFLOW=Test Julia Binding", "GITHUB_ACTION_REPOSITORY=", "HOMEBREW_NO_AUTO_UPDATE=1", "HOME=/home/runner", "GITHUB_ACTION=__run_4", "JAVA_HOME_8_X64=/usr/lib/jvm/temurin-8-jdk-amd64", "GITHUB_EVENT_PATH=/home/runner/work/_temp/_github_workflow/event.json", "GITHUB_STEP_SUMMARY=/home/runner/work/_temp/_runner_file_commands/step_summary_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "MMTK_MIN_HSIZE_G=0.5", "GITHUB_REF=refs/pull/170/merge", "SGX_AESM_ADDR=1", "LC_ALL=C", "GITHUB_REPOSITORY=mmtk/mmtk-julia", "INVOCATION_ID=1c963f8458be4f4ab57e46b11cfd7619", "ImageVersion=20240922.1.0", "JAVA_HOME_21_X64=/usr/lib/jvm/temurin-21-jdk-amd64", "ANDROID_NDK=/usr/local/lib/android/sdk/ndk/27.1.12297006", "STATS_D=false", "LANG=C", "SHLVL=2", "GITHUB_GRAPHQL_URL=https://api.github.com/graphql", "GOROOT_1_22_X64=/opt/hostedtoolcache/go/1.22.7/x64", "DOTNET_MULTILEVEL_LOOKUP=0", "JULIA_CPU_THREADS=2", "OLDPWD=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test", "GITHUB_STATE=/home/runner/work/_temp/_runner_file_commands/save_state_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "XDG_RUNTIME_DIR=/run/user/1001", "RUNNER_WORKSPACE=/home/runner/work/mmtk-julia", "GITHUB_BASE_REF=v1.9.2+RAI", "_=/usr/bin/make", "GRADLE_HOME=/usr/share/gradle-8.10.1", "GITHUB_ACTION_REF=", "DEPLOYMENT_BASEPATH=/opt/runner", "PIPX_HOME=/opt/pipx", "GITHUB_REPOSITORY_OWNER_ID=32701511", "JULIA_NUM_THREADS=1", "GITHUB_ACTOR_ID=1664709", "ANDROID_NDK_ROOT=/usr/local/lib/android/sdk/ndk/27.1.12297006", "RUST_BACKTRACE=1", "***", "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE=/opt/actionarchivecache", "PKG_CONFIG_LIBDIR=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/pkgconfig", "STATS_VMD=true", "GITHUB_WORKSPACE=/home/runner/work/mmtk-julia/mmtk-julia", "GITHUB_WORKFLOW_SHA=ff4f3a247e4ccea64a8db1e40ebc0581368de071", "XDG_CONFIG_HOME=/home/runner/.config", "ANDROID_HOME=/usr/local/lib/android/sdk", "CI=true", "CHROME_BIN=/usr/bin/google-chrome", "STATS_EXTP=https://provjobdsettingscdn.blob.core.windows.net/settings/provjobdsettings-0.5.189/provjobd.data", "STATS_TRP=true", "POWERSHELL_DISTRIBUTION_CHANNEL=GitHub-Actions-ubuntu22", "GECKOWEBDRIVER=/usr/local/share/gecko_driver", "GITHUB_PATH=/home/runner/work/_temp/_runner_file_commands/add_path_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "STATS_RDCL=true", "RUNNER_OS=Linux", "JOURNAL_STREAM=8:4857", "GITHUB_REF_TYPE=branch", "PKG_CONFIG_PATH=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/pkgconfig", "LEIN_JAR=/usr/local/lib/lein/self-installs/leiningen-2.11.2-standalone.jar", "PIPX_BIN_DIR=/opt/pipx_bin", "BOOTSTRAP_HASKELL_NONINTERACTIVE=1", "RUNNER_TEMP=/home/runner/work/_temp", "JAVA_HOME_11_X64=/usr/lib/jvm/temurin-11-jdk-amd64", "GITHUB_TRIGGERING_ACTOR=qinsoon", "SELENIUM_JAR_PATH=/usr/share/java/selenium-server.jar", "GITHUB_REPOSITORY_OWNER=mmtk", "DOTNET_NOLOGO=1", "GITHUB_EVENT_NAME=pull_request", "OPENBLAS_MAIN_FREE=1", "ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk/27.1.12297006", "AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache"]), ProcessExited(1)) [1]
  
  Stacktrace:
    [1] pipeline_error
      @ ./process.jl:565 [inlined]
    [2] run(::Base.CmdRedirect; wait::Bool)
      @ Base ./process.jl:480
    [3] run(::Base.CmdRedirect)
      @ Base ./process.jl:477
    [4] top-level scope
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads.jl:78
    [5] include
      @ ./Base.jl:457 [inlined]
    [6] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:29 [inlined]
    [7] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/usr/share/julia/stdlib/v1.9/Test/src/Test.jl:1498 [inlined]
    [8] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:23 [inlined]
    [9] macro expansion
      @ ./timing.jl:511 [inlined]
   [10] runtests(name::String, path::String, isolate::Bool; seed::UInt128)
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:21
   [11] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, UInt128, Tuple{Symbol}, NamedTuple{(:seed,), Tuple{UInt128}}})
      @ Base ./essentials.jl:818
   [12] (::var"#37#47")()
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/runtests.jl:321
   [13] cd(f::var"#37#47", dir::String)
      @ Base.Filesystem ./file.jl:112
   [14] top-level scope
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/runtests.jl:94
   [15] include(mod::Module, _path::String)
      @ Base ./Base.jl:457
   [16] exec_options(opts::Base.JLOptions)
      @ Base ./client.jl:307
   [17] _start()
      @ Base ./client.jl:522
  in expression starting at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/threads.jl:74


Test Summary: | Pass  Error  Total  Time
  Overall     |   30      1     31  0.6s
    threads   |   30      1     31  1m06.6s
    FAILURE

The global RNG seed was 0x4518bac87c9c63003c75cd7b80338f8d.

Error in testset threads:
Error During Test at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:21
  Got exception outside of a @test
  LoadError: failed process: Process(setenv(`/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/bin/julia -Cnative -J/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/julia/sys.so --depwarn=error --check-bounds=yes -g1 --startup-file=no --depwarn=error --rr-detach --startup-file=no threads_exec.jl`,["MFLAGS=-s", "PATH=/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin", "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1", "GITHUB_RUN_NUMBER=543", "GITHUB_REF_NAME=170/merge", "RUNNER_ARCH=X64", "MAKEFLAGS=s -- JULIA_BUILD_MODE=release", "MAKEOVERRIDES=\${-*-command-variables-*-}", "PERFLOG_LOCATION_SETTING=RUNNER_PERFLOG", "BUILDROOT=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia", "STATS_TIS=mining", "GOROOT_1_20_X64=/opt/hostedtoolcache/go/1.20.14/x64", "JULIA_BUILD_MODE=release", "ACCEPT_EULA=Y", "JULIA_TEST_MAXRSS_MB=15990", "GOROOT_1_21_X64=/opt/hostedtoolcache/go/1.21.13/x64", "ANT_HOME=/usr/share/ant", "RUNNER_USER=runner", "LEIN_HOME=/usr/local/lib/lein", "GITHUB_REPOSITORY_ID=523178566", "GITHUB_ACTOR=qinsoon", "GITHUB_WORKFLOW_REF=mmtk/mmtk-julia/.github/workflows/ci.yml@refs/pull/170/merge", "ANDROID_NDK_LATEST_HOME=/usr/local/lib/android/sdk/ndk/27.1.12297006", "MMTK_JULIA_DIR=/home/runner/work/mmtk-julia/mmtk-julia/.github/scripts/../..", "RUNNER_ENVIRONMENT=github-hosted", "SYSTEMD_EXEC_PID=608", "OPENBLAS_DEFAULT_NUM_THREADS=1", "STATS_D_D=false", "USER=runner", "CONDA=/usr/share/miniconda", "STATS_VMFE=true", "VCPKG_INSTALLATION_ROOT=/usr/local/share/vcpkg", "GITHUB_REF_PROTECTED=false", "GITHUB_API_URL=https://api.github.com", "GITHUB_SHA=ff4f3a247e4ccea64a8db1e40ebc0581368de071", "GITHUB_ACTIONS=true", "STATS_V3PS=true", "GITHUB_RUN_ATTEMPT=1", "MAKELEVEL=2", "ANDROID_SDK_ROOT=/usr/local/lib/android/sdk", "JAVA_HOME=/usr/lib/jvm/temurin-11-jdk-amd64", "SWIFT_PATH=/usr/share/swift/usr/bin", "STATS_EXT=true", "GITHUB_ENV=/home/runner/work/_temp/_runner_file_commands/set_env_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "JAVA_HOME_17_X64=/usr/lib/jvm/temurin-17-jdk-amd64", "RUNNER_PERFLOG=/home/runner/perflog", "RUNNER_NAME=GitHub Actions 59", "EDGEWEBDRIVER=/usr/local/share/edge_driver", "GITHUB_RUN_ID=11097983519", "ImageOS=ubuntu22", "MMTK_MAX_HSIZE_G=4", "NVM_DIR=/home/runner/.nvm", "GHCUP_INSTALL_BASE_PREFIX=/usr/local", "GITHUB_HEAD_REF=pin-globally-rooted-symbols", "GITHUB_RETENTION_DAYS=90", "GITHUB_SERVER_URL=https://github.com", "GITHUB_OUTPUT=/home/runner/work/_temp/_runner_file_commands/set_output_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "STATS_UE=true", "STATS_BLT=true", "GITHUB_JOB=build-test-other", "DEBIAN_FRONTEND=noninteractive", "RUNNER_TRACKING_ID=github_b98b06c0-f1b9-4889-a7e4-0782db0fa73d", "RUNNER_TOOL_CACHE=/opt/hostedtoolcache", "AZURE_EXTENSION_DIR=/opt/az/azcliextensions", "HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS=[3650](https://github.com/mmtk/mmtk-julia/actions/runs/11097983519/job/30830015431?pr=170#step:6:3651)", "CHROMEWEBDRIVER=/usr/local/share/chromedriver-linux64", "GITHUB_WORKFLOW=Test Julia Binding", "GITHUB_ACTION_REPOSITORY=", "HOMEBREW_NO_AUTO_UPDATE=1", "HOME=/home/runner", "GITHUB_ACTION=__run_4", "JAVA_HOME_8_X64=/usr/lib/jvm/temurin-8-jdk-amd64", "GITHUB_EVENT_PATH=/home/runner/work/_temp/_github_workflow/event.json", "GITHUB_STEP_SUMMARY=/home/runner/work/_temp/_runner_file_commands/step_summary_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "MMTK_MIN_HSIZE_G=0.5", "GITHUB_REF=refs/pull/170/merge", "SGX_AESM_ADDR=1", "LC_ALL=C", "GITHUB_REPOSITORY=mmtk/mmtk-julia", "INVOCATION_ID=1c963f8458be4f4ab57e46b11cfd7619", "ImageVersion=20240922.1.0", "JAVA_HOME_21_X64=/usr/lib/jvm/temurin-21-jdk-amd64", "ANDROID_NDK=/usr/local/lib/android/sdk/ndk/27.1.12297006", "STATS_D=false", "LANG=C", "SHLVL=2", "GITHUB_GRAPHQL_URL=https://api.github.com/graphql", "GOROOT_1_22_X64=/opt/hostedtoolcache/go/1.22.7/x64", "DOTNET_MULTILEVEL_LOOKUP=0", "JULIA_CPU_THREADS=2", "OLDPWD=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test", "GITHUB_STATE=/home/runner/work/_temp/_runner_file_commands/save_state_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "XDG_RUNTIME_DIR=/run/user/1001", "RUNNER_WORKSPACE=/home/runner/work/mmtk-julia", "GITHUB_BASE_REF=v1.9.2+RAI", "_=/usr/bin/make", "GRADLE_HOME=/usr/share/gradle-8.10.1", "GITHUB_ACTION_REF=", "DEPLOYMENT_BASEPATH=/opt/runner", "PIPX_HOME=/opt/pipx", "GITHUB_REPOSITORY_OWNER_ID=32701511", "JULIA_NUM_THREADS=1", "GITHUB_ACTOR_ID=1664709", "ANDROID_NDK_ROOT=/usr/local/lib/android/sdk/ndk/27.1.12297006", "RUST_BACKTRACE=1", "***", "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE=/opt/actionarchivecache", "PKG_CONFIG_LIBDIR=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/pkgconfig", "STATS_VMD=true", "GITHUB_WORKSPACE=/home/runner/work/mmtk-julia/mmtk-julia", "GITHUB_WORKFLOW_SHA=ff4f3a247e4ccea64a8db1e40ebc0581368de071", "XDG_CONFIG_HOME=/home/runner/.config", "ANDROID_HOME=/usr/local/lib/android/sdk", "CI=true", "CHROME_BIN=/usr/bin/google-chrome", "STATS_EXTP=https://provjobdsettingscdn.blob.core.windows.net/settings/provjobdsettings-0.5.189/provjobd.data", "STATS_TRP=true", "POWERSHELL_DISTRIBUTION_CHANNEL=GitHub-Actions-ubuntu22", "GECKOWEBDRIVER=/usr/local/share/gecko_driver", "GITHUB_PATH=/home/runner/work/_temp/_runner_file_commands/add_path_4977d55c-7502-4b7d-9f8b-47c0b77daa2a", "STATS_RDCL=true", "RUNNER_OS=Linux", "JOURNAL_STREAM=8:4857", "GITHUB_REF_TYPE=branch", "PKG_CONFIG_PATH=/home/runner/work/mmtk-julia/mmtk-julia/vm/julia/usr/lib/pkgconfig", "LEIN_JAR=/usr/local/lib/lein/self-installs/leiningen-2.11.2-standalone.jar", "PIPX_BIN_DIR=/opt/pipx_bin", "BOOTSTRAP_HASKELL_NONINTERACTIVE=1", "RUNNER_TEMP=/home/runner/work/_temp", "JAVA_HOME_11_X64=/usr/lib/jvm/temurin-11-jdk-amd64", "GITHUB_TRIGGERING_ACTOR=qinsoon", "SELENIUM_JAR_PATH=/usr/share/java/selenium-server.jar", "GITHUB_REPOSITORY_OWNER=mmtk", "DOTNET_NOLOGO=1", "GITHUB_EVENT_NAME=pull_request", "OPENBLAS_MAIN_FREE=1", "ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk/27.1.12297006", "AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache"]), ProcessExited(1)) [1]
  
  Stacktrace:
    [1] pipeline_error
      @ ./process.jl:565 [inlined]
    [2] run(::Base.CmdRedirect; wait::Bool)
      @ Base ./process.jl:480
    [3] run(::Base.CmdRedirect)
      @ Base ./process.jl:477
    [4] top-level scope
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/threads.jl:78
    [5] include
      @ ./Base.jl:457 [inlined]
    [6] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:29 [inlined]
    [7] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/usr/share/julia/stdlib/v1.9/Test/src/Test.jl:1498 [inlined]
    [8] macro expansion
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:23 [inlined]
    [9] macro expansion
      @ ./timing.jl:511 [inlined]
   [10] runtests(name::String, path::String, isolate::Bool; seed::UInt128)
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/testdefs.jl:21
   [11] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, UInt128, Tuple{Symbol}, NamedTuple{(:seed,), Tuple{UInt128}}})
      @ Base ./essentials.jl:818
   [12] (::var"#37#47")()
      @ Main ~/work/mmtk-julia/mmtk-julia/vm/julia/test/runtests.jl:321
   [13] cd(f::var"#37#47", dir::String)
      @ Base.Filesystem ./file.jl:112
   [14] top-level scope
      @ ~/work/mmtk-julia/mmtk-julia/vm/julia/test/runtests.jl:94
   [15] include(mod::Module, _path::String)
      @ Base ./Base.jl:457
   [16] exec_options(opts::Base.JLOptions)
      @ Base ./client.jl:307
   [17] _start()
      @ Base ./client.jl:522
  in expression starting at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/threads.jl:74
ERROR: LoadError: Test run finished with errors
in expression starting at /home/runner/work/mmtk-julia/mmtk-julia/vm/julia/test/runtests.jl:94
make[1]: *** [Makefile:25: threads] Error 1
make: *** [Makefile:611: test-threads] Error 2

The actual error message is unlock count must match lock count when we try to set an atomic int in SpinLock to 0, but found the old value was already 0.

As this is related with copying, it is likely that the SpinLock accessed was moved. In our debug build, we zero the memory for a moved object. So if we follow the old reference, we will find an object with 0.

I am not sure how this is possible, as the SpinLock is the donenotify field of Task, and it should be traced.

This is undeterministic.

@qinsoon qinsoon added the bug Something isn't working label Sep 30, 2024
@qinsoon
Copy link
Member Author

qinsoon commented Oct 2, 2024

donenotify is GenericCondition{SpinLock}. It is moved by the GC, but the code stills accesses the old reference, which ends up with a value of 0s.

  [2] unlock
   @ ./locks-mt.jl:66 [inlined]
  [3] unlock(c::Base.GenericCondition{SpinLock})
   @ Base ./condition.jl:74
  [4] _wait(t::Task)
   @ Base ./task.jl:311
  [5] wait
   @ ./task.jl:347 [inlined]

So if we pin donenotify in jl_new_task, this issue disappears. I am not sure how the invalid reference is from though.

qinsoon added a commit to mmtk/julia that referenced this issue Oct 11, 2024
This PR adds a few more pining for types in the native heap, and exposes globally rooted symbols so we can trace them in the MMTk binding. With this PR, we can run moving Immix without transitively pinning `global_roots_table`. See mmtk/mmtk-julia#170.
* Add `jl_gc_pin`
* Use `jl_gc_pin` to pin `BigFloat` for MPFR
* Rename `PTR_PIN` to `OBJ_PIN`. Additionally add `PTR_PIN` which handles cases for internal pointers.
* Pin objects that are used as key in `jl_codectx_t.global_targets`
* Pin objects that are stored in `jl_codectx_t.PhiNodes`
* Pin objects that are referred to by `jl_cgval_t`
* Disable GC before doing perm alloc in `jl_get_layout` (see mmtk/mmtk-julia#172)
* Pin weak references and the referee (see mmtk/mmtk-julia#176)
* Pin objects that are used in `libuv`'s handle.
* Pin `jl_task_t.completion_future` (see mmtk/mmtk-julia#179)
* Pin all `jl_codeinst_t` objects.
* Pin all `jl_method_instance_t` objects.
* Pin all `jl_module_t` objects.
* Pin all `jl_task_t` objects.
* Expose some `JL_GLOBALLY_ROOTED` symbols, such as `newly_inferred`, `task_done_hook_func`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working workaround
Projects
None yet
Development

No branches or pull requests

1 participant