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

Enable for llvm-symbolizer for GitHub test workflow #1254

Merged
merged 1 commit into from
Oct 2, 2023

Conversation

ohodson
Copy link
Contributor

@ohodson ohodson commented Sep 29, 2023

During setup put the appropriate path for llvm-symbolizer into .bazelrc for Linux and macOS.

Bug: #1247

@MellowYarker
Copy link
Contributor

Any chance this could get reviewed + merged this week? I've got a PR the DO team would really like to get out but have a segfault in mac CI; this would be very helpful! :)

Copy link
Collaborator

@fhanau fhanau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two concerns:

  • The Linux version of the sed command is not having an effect for me locally on Ubuntu, removing the = fixes it for me. The mac version works atm.
  • Note that we continue to use the macOS-12 runner image, which has Xcode 14/clang 14, so the comment should be updated. With brew --prefix llvm@15, this will break when the runner image gets updated, let's just use brew --prefix llvm instead. This assumes having a potentially newer symbolizer version than the version workerd is compiled with is not going to cause problems.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 2, 2023

Two concerns:

  • The Linux version of the sed command is not having an effect for me locally on Ubuntu, removing the = fixes it for me. The mac version works atm.

Oops, sorry, fixed.

  • Note that we continue to use the macOS-12 runner image, which has Xcode 14/clang 14, so the comment should be updated. With brew --prefix llvm@15, this will break when the runner image gets updated, let's just use brew --prefix llvm instead. This assumes having a potentially newer symbolizer version than the version workerd is compiled with is not going to cause problems.

My devbox mac has brew installed llvm@14 and llvm@15, like the runner, and brew --prefix llvm echos the stem /opt/homebrew/opt/llvm, rather than a valid path like /opt/homebrew/opt/llvm@14, or /opt/homebrew/opt/llvm@15.


One resolution to this would be to add a wrapper script that does this on the fly for both Linux and Mac. Versions could roll forward at any time.

@fhanau
Copy link
Collaborator

fhanau commented Oct 2, 2023

  • Note that we continue to use the macOS-12 runner image, which has Xcode 14/clang 14, so the comment should be updated. With brew --prefix llvm@15, this will break when the runner image gets updated, let's just use brew --prefix llvm instead. This assumes having a potentially newer symbolizer version than the version workerd is compiled with is not going to cause problems.

My devbox mac has brew installed llvm@14 and llvm@15, like the runner, and brew --prefix llvm echos the stem /opt/homebrew/opt/llvm, rather than a valid path like /opt/homebrew/opt/llvm@14, or /opt/homebrew/opt/llvm@15.

One resolution to this would be to add a wrapper script that does this on the fly for both Linux and Mac. Versions could roll forward at any time.

For me, /opt/homebrew/opt/llvm is symlinked to the latest installed version of homebrew llvm, so this should still work, I can run /opt/homebrew/opt/llvm/bin/llvm-symbolizer locally. A wrapper script could help, but I feel like it might not even be needed.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 2, 2023

  • Note that we continue to use the macOS-12 runner image, which has Xcode 14/clang 14, so the comment should be updated. With brew --prefix llvm@15, this will break when the runner image gets updated, let's just use brew --prefix llvm instead. This assumes having a potentially newer symbolizer version than the version workerd is compiled with is not going to cause problems.

My devbox mac has brew installed llvm@14 and llvm@15, like the runner, and brew --prefix llvm echos the stem /opt/homebrew/opt/llvm, rather than a valid path like /opt/homebrew/opt/llvm@14, or /opt/homebrew/opt/llvm@15.
One resolution to this would be to add a wrapper script that does this on the fly for both Linux and Mac. Versions could roll forward at any time.

For me, /opt/homebrew/opt/llvm is symlinked to the latest installed version of homebrew llvm, so this should still work, I can run /opt/homebrew/opt/llvm/bin/llvm-symbolizer locally. A wrapper script could help, but I feel like it might not even be needed.

There is no symlink here, so I'm not sure that I'd want to rely on it. Pushed a minor revision to see what the builder has. This is not the most expedient path though.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 2, 2023

For me, /opt/homebrew/opt/llvm is symlinked to the latest installed version of homebrew llvm, so this should still work, I can run /opt/homebrew/opt/llvm/bin/llvm-symbolizer locally. A wrapper script could help, but I feel like it might not even be needed.

There is no symlink here, so I'm not sure that I'd want to rely on it. Pushed a minor revision to see what the builder has. This is not the most expedient path though.

From our macOS runner (Intel rather than Apple silicon):

Run ls -l $(brew --prefix llvm)
  
ls: /usr/local/opt/llvm: No such file or directory
Error: Process completed with exit code 1.

During setup put the appropriate path for llvm-symbolizer into
`.bazelrc` for Linux and macOS.

Fix: #1247
Copy link
Collaborator

@fhanau fhanau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, in that case going with llvm@15 should work for now.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 2, 2023

Thanks Felix, much appreciated.

@ohodson ohodson merged commit 39e4450 into main Oct 2, 2023
7 checks passed
@ohodson ohodson deleted the orion/gh-llvm-symbolizer branch October 2, 2023 18:27
@MellowYarker
Copy link
Contributor

Thank you!

@ohodson
Copy link
Contributor Author

ohodson commented Oct 2, 2023

Hopefully this helps pinpoint the issue from CI.

If it could be helpful to pair for a while with some with a macOS machine and workerd source code, let me know.

@MellowYarker
Copy link
Contributor

Looks like the stack is empty on mac 🙁

FAIL: //src/workerd/api:sql-test (see /private/var/tmp/_bazel_runner/95172a8db72435c774c2789dc64209fb/execroot/workerd/bazel-out/darwin-fastbuild/testlogs/src/workerd/api/sql-test/test.log)
==================== Test output for //src/workerd/api:sql-test:
INFO: From Testing //src/workerd/api:sql-test:
workerd/server/server.c++:3280: info: [ TEST ] main
workerd/io/worker.c++:2695: info: console warning; description = To execute a transaction, please use the state.storage.transaction() API instead of the SQL BEGIN TRANSACTION or SAVEPOINT statements. The JavaScript API is safer because it will automatically roll back on exceptions, and because it interacts correctly with Durable Objects' automatic atomic write coalescing.
*** Received signal #11: Segmentation fault: 11
stack: 

================================================================================

Before pairing it might be quicker to have someone with a mac to run the test (//src/workerd/api:sql-test) using the branch on PR #1138 and send the full log over?

@fhanau
Copy link
Collaborator

fhanau commented Oct 3, 2023

I get the exact same output with the empty stack trace on mac locally. @ohodson is it possible to run wd_test with lldb? That might still tell us where the segfault is happening.

@MellowYarker
Copy link
Contributor

Not to stray too far from this PR but if anyone has a windows machine and can run it that might work too? The same test fails on Windows due to access violation.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 4, 2023

The good news is that there's a stack trace in this comment, the bad news is saved until you scroll down...

The fault is generated in the unwinding code, hence no symbolized stack from llvm-symbolizer.

Screenshot 2023-10-04 at 16 15 02

It's failing on the ldr x3, [x19, 0x10], x19 is 0.

workerd/server/server.c++:3280: info: [ TEST ] main
workerd/io/worker.c++:2695: info: console warning; description = To execute a transaction, please use the state.storage.transaction() API instead of the SQL BEGIN TRANSACTION or SAVEPOINT statements. The JavaScript API is safer because it will automatically roll back on exceptions, and because it interacts correctly with Durable Objects' automatic atomic write coalescing.

Exception has occurred.
EXC_BAD_ACCESS (code=1, address=0x10)

libunwind.dylib!_Unwind_Resume (Unknown Source:0)
workerd!workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>, workerd::server::Server::WorkerService::ActorNamespace::ActorContainer&) (/Volumes/Source/workerd/src/workerd/server/server.c++:1772)
workerd!std::__1::coroutine_handle<void>::destroy[abi:v160006]() const (/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/include/c++/v1/__coroutine/coroutine_handle.h:85)
workerd!kj::_::CoroutineBase::destroy() (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:3069)
workerd!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:354)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::dispose() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:396)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::operator=(std::nullptr_t) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:353)
workerd!kj::_::TransformPromiseNodeBase::dropDependency() (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:2433)
workerd!kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>::~TransformPromiseNode() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:724)
workerd!kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>::~TransformPromiseNode() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:720)
workerd!void kj::dtor<kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>>(kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1044)
workerd!kj::_::FreePromiseNode<kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>, true>::free(kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:428)
workerd!void kj::_::freePromise<kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>>(kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:443)
workerd!kj::_::TransformPromiseNode<kj::_::Void, kj::_::Void, kj::_::IdentityFunc<void>, workerd::server::Server::WorkerService::ActorNamespace::getActorImpl(kj::String)::'lambda'(workerd::Worker::AsyncLock)::operator()(workerd::Worker::AsyncLock)::'lambda0'()::operator()()::'lambda'(kj::Exception&&)>::destroy() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:718)
workerd!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:354)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::dispose() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:396)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:336)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:336)
workerd!kj::_::EagerPromiseNodeBase::~EagerPromiseNodeBase() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1127)
workerd!kj::_::EagerPromiseNode<kj::_::Void>::~EagerPromiseNode() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1149)
workerd!kj::_::EagerPromiseNode<kj::_::Void>::~EagerPromiseNode() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1149)
workerd!void kj::dtor<kj::_::EagerPromiseNode<kj::_::Void>>(kj::_::EagerPromiseNode<kj::_::Void>&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1044)
workerd!kj::_::FreePromiseNode<kj::_::EagerPromiseNode<kj::_::Void>, true>::free(kj::_::EagerPromiseNode<kj::_::Void>*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:428)
workerd!void kj::_::freePromise<kj::_::EagerPromiseNode<kj::_::Void>>(kj::_::EagerPromiseNode<kj::_::Void>*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:443)
workerd!kj::_::EagerPromiseNode<kj::_::Void>::destroy() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1153)
workerd!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember*) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:354)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::dispose() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:396)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:336)
workerd!kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:336)
workerd!kj::_::PromiseBase::~PromiseBase() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-prelude.h:218)
workerd!kj::Promise<void>::~Promise() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async.h:117)
workerd!kj::Promise<void>::~Promise() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async.h:117)
workerd!void kj::dtor<kj::Promise<void>>(kj::Promise<void>&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1044)
workerd!kj::_::NullableValue<kj::Promise<void>>::~NullableValue() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1108)
workerd!kj::_::NullableValue<kj::Promise<void>>::~NullableValue() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1106)
workerd!kj::Maybe<kj::Promise<void>>::~Maybe() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1423)
workerd!kj::Maybe<kj::Promise<void>>::~Maybe() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1423)
workerd!kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry::~Entry() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:49)
workerd!kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry::~Entry() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:49)
workerd!void kj::dtor<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry>(kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1044)
workerd!kj::ArrayBuilder<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry>::removeLast() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/array.h:410)
workerd!kj::Vector<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry>::removeLast() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/vector.h:102)
workerd!kj::Table<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry, kj::HashIndex<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Callbacks>>::eraseImpl(unsigned long) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:786)
workerd!bool kj::Table<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Entry, kj::HashIndex<kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::Callbacks>>::eraseMatch<0ul, kj::StringPtr&>(kj::StringPtr&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:746)
workerd!bool kj::HashMap<kj::String, kj::Maybe<kj::Promise<void>>>::erase<kj::StringPtr&>(kj::StringPtr&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:411)
workerd!workerd::server::Server::WorkerService::ActorNamespace::ActorContainer::~ActorContainer() (/Volumes/Source/workerd/src/workerd/server/server.c++:1419)
workerd!workerd::server::Server::WorkerService::ActorNamespace::ActorContainer::~ActorContainer() (/Volumes/Source/workerd/src/workerd/server/server.c++:1402)
workerd!kj::_::HeapDisposer<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer>::disposeImpl(void*) const (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:560)
workerd!kj::Disposer::Dispose_<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, true>::dispose(workerd::server::Server::WorkerService::ActorNamespace::ActorContainer*, kj::Disposer const&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:668)
workerd!void kj::Disposer::dispose<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer>(workerd::server::Server::WorkerService::ActorNamespace::ActorContainer*) const (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:680)
workerd!kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>::dispose() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:283)
workerd!kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:210)
workerd!kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>::~Own() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:210)
workerd!kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry::~Entry() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:49)
workerd!kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry::~Entry() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:49)
workerd!void kj::dtor<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry>(kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1044)
workerd!kj::ArrayBuilder<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry>::removeLast() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/array.h:410)
workerd!kj::Vector<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry>::removeLast() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/vector.h:102)
workerd!kj::Table<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::eraseImpl(unsigned long) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:786)
workerd!bool kj::Table<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::eraseMatch<0ul, kj::StringPtr&>(kj::StringPtr&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:746)
workerd!bool kj::HashMap<kj::String, kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer, std::nullptr_t>>::erase<kj::StringPtr>(kj::StringPtr&&) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:411)
workerd!workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>, workerd::server::Server::WorkerService::ActorNamespace::ActorContainer&) (/Volumes/Source/workerd/src/workerd/server/server.c++:1783)
workerd!std::__1::coroutine_handle<void>::resume[abi:v160006]() const (/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/include/c++/v1/__coroutine/coroutine_handle.h:79)
workerd!kj::_::CoroutineBase::fire() (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:3027)
workerd!kj::EventLoop::turn() (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:1814)
workerd!kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25::operator()() const (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:1974)
workerd!void kj::WaitScope::runOnStackPool<kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25>(kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25&&) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.h:1320)
workerd!kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/async.c++:1971)
workerd!kj::Promise<void>::wait(kj::WaitScope&, kj::SourceLocation) (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1378)
workerd!void workerd::server::CliMain::serveImpl<workerd::server::CliMain::test()::'lambda'(workerd::jsg::V8System&, workerd::server::config::Config::Reader)>(workerd::server::CliMain::test()::'lambda'(workerd::jsg::V8System&, workerd::server::config::Config::Reader)&&) (/Volumes/Source/workerd/src/workerd/server/workerd.c++:1035)
workerd!workerd::server::CliMain::test() (/Volumes/Source/workerd/src/workerd/server/workerd.c++:1057)
workerd!auto workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...)::operator()<workerd::server::CliMain>(auto&, auto&&...) (/Volumes/Source/workerd/src/workerd/server/workerd.c++:659)
workerd!auto kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>::operator()<>() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:263)
workerd!kj::MainBuilder::Validity auto workerd::server::cliMethod<kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>>(auto&&)::'lambda'(auto&&...)::operator()<>('lambda'(auto&&...)) (/Volumes/Source/workerd/src/workerd/server/workerd.c++:92)
workerd!kj::Function<kj::MainBuilder::Validity ()>::Impl<auto workerd::server::cliMethod<kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>>(auto&&)::'lambda'(auto&&...)>::operator()() (/Volumes/Source/workerd/bazel-out/darwin_arm64-dbg/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:142)
workerd!kj::Function<kj::MainBuilder::Validity ()>::operator()() (/Volumes/Source/workerd/external/capnp-cpp/src/kj/function.h:119)
workerd!kj::MainBuilder::MainImpl::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/main.c++:612)
workerd!kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/function.h:142)
workerd!kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/function.h:119)
workerd!kj::MainBuilder::MainImpl::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/main.c++:510)
workerd!kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/function.h:142)
workerd!kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/function.h:119)
workerd!kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**)::$_0::operator()() const (/Volumes/Source/workerd/external/capnp-cpp/src/kj/main.c++:219)
workerd!kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**)::$_0>(kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**)::$_0&&) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/exception.h:339)
workerd!kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**) (/Volumes/Source/workerd/external/capnp-cpp/src/kj/main.c++:219)
workerd!main (/Volumes/Source/workerd/src/workerd/server/workerd.c++:1312)
start (Unknown Source:0)

@ohodson
Copy link
Contributor Author

ohodson commented Oct 4, 2023

FWIW, we have most of the *.wdtests available in vscode already for debugging, selecting the 'workerd wdtest test case (dbg)'. At the time of writing, we don't have those that need custom info, like sql-test.wd-test. Fix for that coming.

@ohodson
Copy link
Contributor Author

ohodson commented Oct 5, 2023

@MellowYarker , a workerd ASAN build and test on Linux on the milan/evict-inactive-actors flags an issue with //src/workerd/api:sql-test:

$ bazel test --config=asan //src/workerd/api:sql-test
...
Executing tests from //src/workerd/api:sql-test
-----------------------------------------------------------------------------
workerd/server/server.c++:3280: info: [ TEST ] main
workerd/io/worker.c++:2695: info: console warning; description = To execute a transaction, please use the state.storage.transaction() API instead of the SQL BEGIN TRANSACTION or SAVEPOINT statements. The JavaScript API is safer because it will automatically roll back on exceptions, and because it interacts correctly with Durable Objects' automatic atomic write coalescing.
=================================================================
==12==ERROR: AddressSanitizer: heap-use-after-free on address 0x6190000b4610 at pc 0x564761396dc5 bp 0x7ffd16913ed0 sp 0x7ffd16913ec8
READ of size 8 at 0x6190000b4610 thread T0
    #0 0x564761396dc4 in kj::_::CoroutineBase::DisposalResults* kj::_::readMaybe<kj::_::CoroutineBase::DisposalResults>(kj::Maybe<kj::_::CoroutineBase::DisposalResults&> const&) /proc/self/cwd/bazel-out/k8-fastbuild/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1290:60
    #1 0x564761396dc4 in kj::_::CoroutineBase::unhandled_exception() /proc/self/cwd/external/capnp-cpp/src/kj/async.c++:2965:3
    #2 0x564759812871 in workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>, workerd::server::Server::WorkerService::ActorNamespace::ActorContainer&) (.resume) /proc/self/cwd/src/workerd/server/server.c++:1772:23
    #3 0x56476139726d in std::__1::coroutine_handle<void>::resume[abi:v15007]() const /usr/lib/llvm-15/bin/../include/c++/v1/__coroutine/coroutine_handle.h:78:9
    #4 0x56476139726d in kj::_::CoroutineBase::fire() /proc/self/cwd/external/capnp-cpp/src/kj/async.c++:3027:13
    #5 0x56476139726d in non-virtual thunk to kj::_::CoroutineBase::fire() /proc/self/cwd/external/capnp-cpp/src/kj/async.c++
    #6 0x56476139b07e in kj::EventLoop::turn() /proc/self/cwd/external/capnp-cpp/src/kj/async.c++:1814:31
    #7 0x56476139b07e in kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25::operator()() const /proc/self/cwd/external/capnp-cpp/src/kj/async.c++:1974:21
    #8 0x5647613808c7 in void kj::WaitScope::runOnStackPool<kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25>(kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation)::$_25&&) /proc/self/cwd/external/capnp-cpp/src/kj/async.h:1320:7
    #9 0x5647613808c7 in kj::_::waitImpl(kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>&&, kj::_::ExceptionOrValue&, kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/external/capnp-cpp/src/kj/async.c++:1971:17
    #10 0x5647597932e0 in kj::Promise<void>::wait(kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/bazel-out/k8-fastbuild/bin/external/capnp-cpp/src/kj/_virtual_includes/kj-async/kj/async-inl.h:1378:3
    #11 0x564759791863 in void workerd::server::CliMain::serveImpl<workerd::server::CliMain::test()::'lambda'(workerd::jsg::V8System&, workerd::server::config::Config::Reader)>(workerd::server::CliMain::test()::'lambda'(workerd::jsg::V8System&, workerd::server::config::Config::Reader)&&) /proc/self/cwd/src/workerd/server/workerd.c++:1035:15
    #12 0x5647597910c2 in workerd::server::CliMain::test() /proc/self/cwd/src/workerd/server/workerd.c++:1057:5
    #13 0x564759790fd9 in auto workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...)::operator()<workerd::server::CliMain>(auto&, auto&&...) /proc/self/cwd/src/workerd/server/workerd.c++:659:27
    #14 0x564759790fd9 in auto kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>::operator()<>() /proc/self/cwd/bazel-out/k8-fastbuild/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:263:12
    #15 0x564759790fd9 in kj::MainBuilder::Validity auto workerd::server::cliMethod<kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>>(auto&&)::'lambda'(auto&&...)::operator()<>(auto&&...) /proc/self/cwd/src/workerd/server/workerd.c++:92:7
    #16 0x564759790fd9 in kj::Function<kj::MainBuilder::Validity ()>::Impl<auto workerd::server::cliMethod<kj::_::BoundMethod<workerd::server::CliMain&, workerd::server::CliMain::getTest()::'lambda1'(auto&, auto&&...), workerd::server::CliMain::getTest()::'lambda2'(auto&, auto&&...)>>(auto&&)::'lambda'(auto&&...)>::operator()() /proc/self/cwd/bazel-out/k8-fastbuild/bin/external/capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:142:14
    #17 0x5647615b6038 in kj::Function<kj::MainBuilder::Validity ()>::operator()() /proc/self/cwd/external/capnp-cpp/src/kj/function.h:119:12

@ohodson
Copy link
Contributor Author

ohodson commented Oct 6, 2023

The asan build on Linux is probably easiest to repro and investigate.

For posterity, here's the stack from Windows:

Exception has occurred: W32/0xC0000005
Unhandled exception at 0x00007FF65459FAE3 in workerd.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.

workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::dispose() Line 393 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:393)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::~Own() Line 336 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:336)
workerd.exe!kj::_::PromiseBase::~PromiseBase() Line 218 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-prelude.h:218)
workerd.exe!kj::Promise<void>::~Promise() Line 117 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async.h:117)
workerd.exe!workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>) Line 1784 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\server.c++:1784)
vcruntime140d.dll!00007fff7d871030() (Unknown Source:0)
vcruntime140d.dll!00007fff7d87827b() (Unknown Source:0)
vcruntime140d.dll!00007fff7d88d47e() (Unknown Source:0)
vcruntime140d.dll!00007fff7d8763c0() (Unknown Source:0)
vcruntime140d.dll!00007fff7d876abc() (Unknown Source:0)
vcruntime140d.dll!00007fff7d88e194() (Unknown Source:0)
ntdll.dll!00007fffa9ad3e7f() (Unknown Source:0)
ntdll.dll!00007fffa9a4fd44() (Unknown Source:0)
vcruntime140d.dll!00007fff7d88dbff() (Unknown Source:0)
vcruntime140d.dll!00007fff7d8746ae() (Unknown Source:0)
vcruntime140d.dll!00007fff7d874d5b() (Unknown Source:0)
vcruntime140d.dll!00007fff7d8765b3() (Unknown Source:0)
vcruntime140d.dll!00007fff7d876abc() (Unknown Source:0)
vcruntime140d.dll!00007fff7d88e194() (Unknown Source:0)
ntdll.dll!00007fffa9ad3dff() (Unknown Source:0)
ntdll.dll!00007fffa9a4e456() (Unknown Source:0)
ntdll.dll!00007fffa9ad2dee() (Unknown Source:0)
KernelBase.dll!00007fffa6e4531c() (Unknown Source:0)
vcruntime140d.dll!00007fff7d87b760() (Unknown Source:0)
workerd.exe!kj::ExceptionCallback::RootExceptionCallback::onFatalException(kj::Exception && exception) Line 1080 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\exception.c++:1080)
workerd.exe!kj::throwFatalException(kj::Exception && exception, unsigned int ignoreCount) Line 1167 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\exception.c++:1167)
workerd.exe!kj::_::Debug::Fault::fatal() Line 371 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\debug.c++:371)
workerd.exe!kj::_::Event::~Event() Line 2148 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:2148)
workerd.exe!kj::_::CoroutineBase::~CoroutineBase() Line 2956 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:2956)
workerd.exe!kj::_::Coroutine<void>::~Coroutine() Line 2078 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:2078)
workerd.exe!workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>) Line 1772 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\server.c++:1772)
workerd.exe!std::coroutine_handle<void>::destroy() Line 90 (c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\coroutine:90)
workerd.exe!kj::_::CoroutineBase::destroy() Line 3070 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:3070)
workerd.exe!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember * node) Line 355 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:355)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::dispose() Line 398 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:398)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::operator=(void *) Line 353 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:353)
workerd.exe!kj::_::TransformPromiseNodeBase::dropDependency() Line 2434 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:2434)
workerd.exe!kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'>::~TransformPromiseNode() Line 724 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:724)
workerd.exe!kj::dtor<kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'>>(kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'> & location) Line 1045 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1045)
workerd.exe!kj::_::FreePromiseNode<kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'>,1>::free(kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'> * ptr) Line 429 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:429)
workerd.exe!kj::_::freePromise<kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'>>(kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'> * ptr) Line 444 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:444)
workerd.exe!kj::_::TransformPromiseNode<kj::_::Void,kj::_::Void,kj::_::IdentityFunc<void>,`lambda at src/workerd/server/server.c++:1760:32'>::destroy() Line 718 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:718)
workerd.exe!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember * node) Line 355 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:355)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::dispose() Line 398 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:398)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::~Own() Line 336 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:336)
workerd.exe!kj::_::EagerPromiseNodeBase::~EagerPromiseNodeBase() Line 1127 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:1127)
workerd.exe!kj::_::EagerPromiseNode<kj::_::Void>::~EagerPromiseNode() Line 1149 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:1149)
workerd.exe!kj::dtor<kj::_::EagerPromiseNode<kj::_::Void>>(kj::_::EagerPromiseNode<kj::_::Void> & location) Line 1045 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1045)
workerd.exe!kj::_::FreePromiseNode<kj::_::EagerPromiseNode<kj::_::Void>,1>::free(kj::_::EagerPromiseNode<kj::_::Void> * ptr) Line 429 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:429)
workerd.exe!kj::_::freePromise<kj::_::EagerPromiseNode<kj::_::Void>>(kj::_::EagerPromiseNode<kj::_::Void> * ptr) Line 444 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:444)
workerd.exe!kj::_::EagerPromiseNode<kj::_::Void>::destroy() Line 1153 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:1153)
workerd.exe!kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember * node) Line 355 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:355)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::dispose() Line 398 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:398)
workerd.exe!kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer>::~Own() Line 336 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:336)
workerd.exe!kj::_::PromiseBase::~PromiseBase() Line 218 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-prelude.h:218)
workerd.exe!kj::Promise<void>::~Promise() Line 117 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async.h:117)
workerd.exe!kj::dtor<kj::Promise<void>>(kj::Promise<void> & location) Line 1045 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1045)
workerd.exe!kj::_::NullableValue<kj::Promise<void>>::~NullableValue() Line 1110 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1110)
workerd.exe!kj::Maybe<kj::Promise<void>>::~Maybe() Line 1423 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1423)
workerd.exe!kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry::~Entry() Line 49 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\map.h:49)
workerd.exe!kj::dtor<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry>(kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry & location) Line 1045 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1045)
workerd.exe!kj::ArrayBuilder<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry>::removeLast() Line 411 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\array.h:411)
workerd.exe!kj::Vector<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry>::removeLast() Line 103 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\vector.h:103)
workerd.exe!kj::Table<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry,kj::HashIndex<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Callbacks>>::eraseImpl(unsigned __int64 pos) Line 787 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\table.h:787)
workerd.exe!kj::Table<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Entry,kj::HashIndex<kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::Callbacks>>::eraseMatch<0,kj::StringPtr &>(kj::StringPtr & params) Line 746 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\table.h:746)
workerd.exe!kj::HashMap<kj::String,kj::Maybe<kj::Promise<void>>>::erase<kj::StringPtr &>(kj::StringPtr & key) Line 411 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\map.h:411)
workerd.exe!workerd::server::Server::WorkerService::ActorNamespace::ActorContainer::~ActorContainer() Line 1419 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\server.c++:1419)
workerd.exe!kj::_::HeapDisposer<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer>::disposeImpl(void * pointer) Line 560 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:560)
workerd.exe!kj::Disposer::Dispose_<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,1>::dispose(workerd::server::Server::WorkerService::ActorNamespace::ActorContainer * object, const kj::Disposer & disposer) Line 669 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:669)
workerd.exe!kj::Disposer::dispose<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer>(workerd::server::Server::WorkerService::ActorNamespace::ActorContainer * object) Line 681 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:681)
workerd.exe!kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>::dispose() Line 285 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:285)
workerd.exe!kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>::~Own() Line 210 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\memory.h:210)
workerd.exe!kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry::~Entry() Line 49 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\map.h:49)
workerd.exe!kj::dtor<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry>(kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry & location) Line 1045 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\common.h:1045)
workerd.exe!kj::ArrayBuilder<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry>::removeLast() Line 411 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\array.h:411)
workerd.exe!kj::Vector<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry>::removeLast() Line 103 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\vector.h:103)
workerd.exe!kj::Table<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry,kj::HashIndex<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Callbacks>>::eraseImpl(unsigned __int64 pos) Line 787 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\table.h:787)
workerd.exe!kj::Table<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Entry,kj::HashIndex<kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::Callbacks>>::eraseMatch<0,kj::StringPtr &>(kj::StringPtr & params) Line 746 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\table.h:746)
workerd.exe!kj::HashMap<kj::String,kj::Own<workerd::server::Server::WorkerService::ActorNamespace::ActorContainer,std::nullptr_t>>::erase<kj::StringPtr>(kj::StringPtr && key) Line 411 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\map.h:411)
workerd.exe!workerd::server::Server::WorkerService::ActorNamespace::onActorBroken(kj::Promise<void>) Line 1783 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\server.c++:1783)
workerd.exe!std::coroutine_handle<void>::resume() Line 86 (c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\coroutine:86)
workerd.exe!kj::_::CoroutineBase::fire() Line 3027 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:3027)
workerd.exe!kj::EventLoop::turn() Line 1814 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:1814)
workerd.exe!kj::_::waitImpl::<lambda_25>::operator()() Line 1974 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:1974)
workerd.exe!kj::WaitScope::runOnStackPool<`lambda at external/capnp-cpp/src/kj/async.c++:1971:32'>(kj::_::waitImpl::<lambda_25> && func) Line 1322 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.h:1322)
workerd.exe!kj::_::waitImpl(kj::Own<kj::_::PromiseNode,kj::_::PromiseDisposer> && node, kj::_::ExceptionOrValue & result, kj::WaitScope & waitScope, kj::SourceLocation location) Line 1971 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\async.c++:1971)
workerd.exe!kj::Promise<void>::wait(kj::WaitScope & waitScope, kj::SourceLocation location) Line 1378 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj-async\kj\async-inl.h:1378)
workerd.exe!workerd::server::CliMain::serveImpl<`lambda at src/workerd/server/workerd.c++:1057:15'>(workerd::server::CliMain::test::<lambda_1> && func) Line 1035 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\workerd.c++:1035)
workerd.exe!workerd::server::CliMain::test() Line 1057 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\workerd.c++:1057)
workerd.exe!workerd::server::CliMain::getTest::<lambda_3>::operator()<workerd::server::CliMain>(workerd::server::CliMain & s) Line 659 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\workerd.c++:659)
workerd.exe!kj::_::BoundMethod<workerd::server::CliMain &,`lambda at src/workerd/server/workerd.c++:659:27',`lambda at src/workerd/server/workerd.c++:659:27'>::operator()<>() Line 263 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\function.h:263)
workerd.exe!<lambda_1>::operator()<>() Line 92 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\workerd.c++:92)
workerd.exe!kj::Function<kj::MainBuilder::Validity ()>::Impl<`lambda at src/workerd/server/workerd.c++:90:10'>::operator()() Line 142 (c:\tmp\rp4ezqc4\execroot\workerd\bazel-out\x64_windows-dbg\bin\external\capnp-cpp\src\kj\_virtual_includes\kj\kj\function.h:142)
workerd.exe!kj::Function<kj::MainBuilder::Validity ()>::operator()() Line 119 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\function.h:119)
workerd.exe!kj::MainBuilder::MainImpl::operator()(kj::StringPtr programName, kj::ArrayPtr<const kj::StringPtr> params) Line 612 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\main.c++:612)
workerd.exe!kj::Function<void (kj::StringPtr, kj::ArrayPtr<const kj::StringPtr>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr params, kj::ArrayPtr<const kj::StringPtr> params) Line 142 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\function.h:142)
workerd.exe!kj::Function<void (kj::StringPtr, kj::ArrayPtr<const kj::StringPtr>)>::operator()(kj::StringPtr params, kj::ArrayPtr<const kj::StringPtr> params) Line 119 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\function.h:119)
workerd.exe!kj::MainBuilder::MainImpl::operator()(kj::StringPtr programName, kj::ArrayPtr<const kj::StringPtr> params) Line 510 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\main.c++:510)
workerd.exe!kj::Function<void (kj::StringPtr, kj::ArrayPtr<const kj::StringPtr>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr params, kj::ArrayPtr<const kj::StringPtr> params) Line 142 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\function.h:142)
workerd.exe!kj::Function<void (kj::StringPtr, kj::ArrayPtr<const kj::StringPtr>)>::operator()(kj::StringPtr params, kj::ArrayPtr<const kj::StringPtr> params) Line 119 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\function.h:119)
workerd.exe!kj::runMainAndExit::<lambda_1>::operator()() Line 219 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\main.c++:219)
workerd.exe!kj::runCatchingExceptions<`lambda at external/capnp-cpp/src/kj/main.c++:219:5'>(kj::runMainAndExit::<lambda_1> && func) Line 339 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\exception.h:339)
workerd.exe!kj::runMainAndExit(kj::ProcessContext & context, kj::Function<void (kj::StringPtr, kj::ArrayPtr<const kj::StringPtr>)> && func, int argc, char * * argv) Line 219 (c:\tmp\rp4ezqc4\execroot\workerd\external\capnp-cpp\src\kj\main.c++:219)
workerd.exe!main(int argc, char * * argv) Line 1311 (c:\tmp\rp4ezqc4\execroot\workerd\src\workerd\server\workerd.c++:1311)
workerd.exe!invoke_main() Line 79 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79)
workerd.exe!__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
workerd.exe!__scrt_common_main() Line 331 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331)
workerd.exe!mainCRTStartup(void * __formal) Line 17 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17)
kernel32.dll!00007fffa8d0257d() (Unknown Source:0)
ntdll.dll!00007fffa9a8aa68() (Unknown Source:0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants