Repository navigation
Initial support for devtools inspector protocol - #17
Conversation
|
One issue this currently has is an error stack that is printed to the terminal when an attached debugger disconnects: |
|
Another issue is that memory profiling does not work. The devtools client will say that it's recording the snapshot but it never completes. |
FWIW apparently this is some sort of premium feature but will become available when the repo is public. |
29079f6 to
f3f68cd
Compare
|
Ok, so I updated the implementation so that it is not added to the list of named/registered services but it still implements from I've also made it so that disconnects are handled cleanly and added some logging when |
|
Updated |
02bba53 to
b1ad15a
Compare
But you aren't actually using You should be able to use |
0af087c to
10b7d23
Compare
Yes, I know, but the mechanism was there and very simple to extend from. Easiest thing that just worked. I've reworked it as you've suggested. |
645b406 to
c99159e
Compare
382c1ae to
40c088e
Compare
|
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
40c088e to
f2fcd03
Compare
|
Bad CLA-bot! Bad! No I will not sign the CLA. (for those reading...I don't have to since I'm Cloudflare already...) |
d2b54b8 to
29dcab3
Compare
|
@jasnell Its gonna be easier if you just write the comment it wants you to write. You could also edit yourself into the allow list but that seems like more work. |
a2de5de to
bcb2434
Compare
|
I have read the CLA Document and I hereby sign the CLA |
|
(silly CLA bot... you annoy me already) |
2152b80 to
3e6363f
Compare
Initial support for devtools inspector protocol for workerd. Adds an additional option to `workerd serve` to enable a local inspector port: ```bash $ ./workerd serve -i 127.0.0.1:9229 config.capnp ``` When enabled, the inspector protocol wil be available on the given address and will be discoverable in devtools. Very rudimentary for now.
3e6363f to
f982470
Compare
Facet channels can outlive their parent actor container
when an alarm exceeds its execution limit.
Access times were updated by traversing raw parent pointers
resulting in a UaF, share the access time across the facet
tree instead
[ TEST ] server-test.c++:3024: Server: alarm timeout with live facet channel
workerd/api/global-scope.c++:663: NOSENTRY Alarm exceeded its allowed execution time
=================================================================
==306090==ERROR: AddressSanitizer: heap-use-after-free on address 0xfd3fae55c0b8 at pc 0xaaaabf64b1e8 bp 0xffffc5fcd010 sp 0xffffc5fcd008
READ of size 8 at 0xfd3fae55c0b8 thread T0
#0 0xaaaabf64b1e4 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:577:20
#1 0xaaaabf64b1d4 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:579:11
#2 0xaaaabf64af60 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1644:23
#3 0xaaaabf648714 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1643:41
#4 0xaaaabf648714 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1643:41
#5 0xaaaabf648714 in virtual thunk to workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#6 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#7 0xaaaac231c3c8 in void kj::Disposer::dispose<workerd::IoChannelFactory::SubrequestChannel>(workerd::IoChannelFactory::SubrequestChannel*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#8 0xaaaac231c3c8 in kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#9 0xaaaac231c3c8 in kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#10 0xaaaac231c3c8 in void kj::dtor<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>(kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#11 0xaaaac231c3c8 in kj::_::NullableValue<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#12 0xaaaac231c3c8 in kj::_::NullableValue<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#13 0xaaaac231c3c8 in kj::Maybe<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#14 0xaaaac231c3c8 in workerd::api::FacetOutgoingFactory::~FacetOutgoingFactory() /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor-state.c++:980:7
#15 0xaaaac231c2e8 in kj::_::HeapDisposer<workerd::api::FacetOutgoingFactory>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#16 0xaaaac2208774 in void kj::Disposer::dispose<workerd::api::Fetcher::OutgoingFactory>(workerd::api::Fetcher::OutgoingFactory*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#17 0xaaaac2208774 in kj::Own<workerd::api::Fetcher::OutgoingFactory, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#18 0xaaaac2208774 in kj::Own<workerd::api::Fetcher::OutgoingFactory, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#19 0xaaaac2208774 in workerd::SpecificOwnedObject<workerd::api::Fetcher::OutgoingFactory>::~SpecificOwnedObject() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/io/_virtual_includes/io/workerd/io/io-own.h:70:8
#20 0xaaaac2208774 in kj::_::HeapDisposer<workerd::SpecificOwnedObject<workerd::api::Fetcher::OutgoingFactory>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#21 0xaaaac20613f4 in void kj::Disposer::dispose<workerd::OwnedObject>(workerd::OwnedObject*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#22 0xaaaac20613f4 in kj::Own<workerd::OwnedObject, std::nullptr_t>::operator=(kj::Own<workerd::OwnedObject, std::nullptr_t>&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:373:21
#23 0xaaaac20613f4 in kj::_::NullableValue<kj::Own<workerd::OwnedObject, std::nullptr_t>>& kj::_::NullableValue<kj::Own<workerd::OwnedObject, std::nullptr_t>>::operator=<kj::Own<workerd::OwnedObject, std::nullptr_t>>(T&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1655:13
#24 0xaaaac20613f4 in kj::Maybe<kj::Own<workerd::OwnedObject, std::nullptr_t>>::operator=(kj::Maybe<kj::Own<workerd::OwnedObject, std::nullptr_t>>&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:2003:11
#25 0xaaaac20609a4 in workerd::OwnedObjectList::unlink(workerd::OwnedObject&) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-own.c++:112:16
#26 0xaaaac20609a4 in workerd::OwnedObjectList::~OwnedObjectList() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-own.c++:104:5
#27 0xaaaac2025370 in workerd::IoContext::~IoContext() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:773:1
#28 0xaaaac2026530 in workerd::IoContext::~IoContext() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:752:41
#29 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#30 0xaaaac219bae8 in void kj::Disposer::dispose<workerd::IoContext>(workerd::IoContext*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#31 0xaaaac219bae8 in kj::Own<workerd::IoContext, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#32 0xaaaac219bae8 in kj::Own<workerd::IoContext, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#33 0xaaaac219bae8 in void kj::dtor<kj::Own<workerd::IoContext, std::nullptr_t>>(kj::Own<workerd::IoContext, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#34 0xaaaac219bae8 in kj::_::NullableValue<kj::Own<workerd::IoContext, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#35 0xaaaac219bae8 in kj::_::NullableValue<kj::Own<workerd::IoContext, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#36 0xaaaac219bae8 in kj::Maybe<kj::Own<workerd::IoContext, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#37 0xaaaac219bae8 in workerd::Worker::Actor::Impl::~Impl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:3887:3
#38 0xaaaac219b4d8 in kj::_::HeapDisposer<workerd::Worker::Actor::Impl>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#39 0xaaaac20ea888 in void kj::Disposer::dispose<workerd::Worker::Actor::Impl>(workerd::Worker::Actor::Impl*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#40 0xaaaac20ea888 in kj::Own<workerd::Worker::Actor::Impl, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#41 0xaaaac20ea888 in kj::Own<workerd::Worker::Actor::Impl, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#42 0xaaaac20ea888 in workerd::Worker::Actor::~Actor() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:4069:1
#43 0xaaaac20ead50 in workerd::Worker::Actor::~Actor() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:4064:41
#44 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#45 0xaaaac21a3620 in void kj::Disposer::dispose<workerd::Worker::Actor>(workerd::Worker::Actor*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#46 0xaaaac21a3620 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#47 0xaaaac21a3620 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#48 0xaaaac21a3620 in kj::_::OwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#49 0xaaaac21a3620 in kj::_::DisposableOwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#50 0xaaaac21a3620 in kj::_::DisposableOwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#51 0xaaaac1fdd258 in void kj::Disposer::dispose<workerd::Worker::Actor>(workerd::Worker::Actor*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#52 0xaaaac1fdd258 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#53 0xaaaac1fdd258 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#54 0xaaaac1fdd258 in void kj::dtor<kj::Own<workerd::Worker::Actor, std::nullptr_t>>(kj::Own<workerd::Worker::Actor, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#55 0xaaaac1fdd258 in kj::_::NullableValue<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#56 0xaaaac1fdd258 in kj::_::NullableValue<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#57 0xaaaac1fdd258 in kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#58 0xaaaac1fdd258 in kj::_::OwnedBundle<kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1156:8
#59 0xaaaac1fdd258 in kj::_::OwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#60 0xaaaac1fdd258 in kj::_::DisposableOwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#61 0xaaaac1fdd258 in kj::_::DisposableOwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#62 0xaaaac20576f4 in void kj::Disposer::dispose<workerd::IoContext_IncomingRequest>(workerd::IoContext_IncomingRequest*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#63 0xaaaac20576f4 in kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#64 0xaaaac20576f4 in kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#65 0xaaaac20576f4 in kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>::~AttachmentPromiseNode() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:470:3
#66 0xaaaac2057668 in void kj::dtor<kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>>(kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#67 0xaaaac2057668 in void kj::_::freePromise<kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>>(kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>*) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:371:5
#68 0xaaaac2057668 in kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:464:29
#69 0xaaaac4370550 in kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember*) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async-inl.h:290:11
#70 0xaaaac4370550 in kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:590:7
#71 0xaaaac4370550 in kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::operator=(std::nullptr_t) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:537:5
#72 0xaaaac4370550 in kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2438:16
#73 0xaaaac4370550 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0>(kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#74 0xaaaac4370550 in kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2437:25
#75 0xaaaac437c204 in kj::_::TransformPromiseNode<void, kj::Canceler::AdapterImpl<void>::AdapterImpl(kj::PromiseFulfiller<void>&, kj::Canceler&, kj::Promise<void>)::$_0, kj::Canceler::AdapterImpl<void>::AdapterImpl(kj::PromiseFulfiller<void>&, kj::Canceler&, kj::Promise<void>)::$_1>::getImpl(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async-inl.h:669:5
#76 0xaaaac436fff8 in kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2413:5
#77 0xaaaac436fff8 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0>(kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#78 0xaaaac436fff8 in kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2412:25
#79 0xaaaac4379140 in kj::_::EagerPromiseNodeBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:3034:15
#80 0xaaaac437941c in non-virtual thunk to kj::_::EagerPromiseNodeBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++
#81 0xaaaac4368eb0 in kj::EventLoop::turn() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:1851:12
#82 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2136:17
#83 0xaaaac436c724 in void kj::WaitScope::runOnStackPool<kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1>(kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.h:1671:7
#84 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2134:13
#85 0xaaaabf42df20 in kj::Promise<void>::poll(kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:1429:10
#86 0xaaaabf42df20 in workerd::server::(anonymous namespace)::TestServer::wait(unsigned long) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:445:26
#87 0xaaaabf42d8e0 in workerd::server::(anonymous namespace)::TestCase3024::run() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:3098:8
#88 0xaaaabf4ee4a4 in kj::TestRunner::run()::'lambda'()::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:271:23
#89 0xaaaabf4ee4a4 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::TestRunner::run()::'lambda'()>(kj::TestRunner::run()::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#90 0xaaaabf4ed3cc in kj::TestRunner::run() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:269:33
#91 0xaaaabf4ece60 in auto kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...)::operator()<kj::TestRunner>(auto&, auto&&...) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:168:49
#92 0xaaaabf4ece60 in auto kj::_::BoundMethod<kj::TestRunner&, kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...), kj::TestRunner::getMain()::'lambda6'(auto&, auto&&...)>::operator()<>() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:263:12
#93 0xaaaabf4ece60 in kj::Function<kj::MainBuilder::Validity ()>::Impl<kj::_::BoundMethod<kj::TestRunner&, kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...), kj::TestRunner::getMain()::'lambda6'(auto&, auto&&...)>>::operator()() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:142:14
#94 0xaaaac43ff3b0 in kj::Function<kj::MainBuilder::Validity ()>::operator()() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:119:12
#95 0xaaaac43ff3b0 in kj::MainBuilder::MainImpl::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:601:23
#96 0xaaaac440bf3c in kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:142:14
#97 0xaaaac43fa8c0 in kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:119:12
#98 0xaaaac43fa8c0 in kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:220:7
#99 0xaaaac43fa8c0 in 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&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/exception.h:642:5
#100 0xaaaac43fa314 in kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:219:27
#101 0xaaaabf4ea2bc in main /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:332:1
#102 0xffffaf252258 (/lib/aarch64-linux-gnu/libc.so.6+0x22258) (BuildId: 4c1eca4527d1163b2dde55860b69f270158febb4)
#103 0xffffaf252338 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x22338) (BuildId: 4c1eca4527d1163b2dde55860b69f270158febb4)
#104 0xaaaabf32b02c in _start (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1ddb02c)
0xfd3fae55c0b8 is located 120 bytes inside of 392-byte region [0xfd3fae55c040,0xfd3fae55c1c8)
freed by thread T0 here:
#0 0xaaaabf409dac in operator delete(void*, unsigned long) (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1eb9dac)
#1 0xaaaabf67e7d0 in workerd::server::Server::ActorNamespace::ActorContainer::~ActorContainer() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:522:39
#2 0xaaaabf67e7d0 in non-virtual thunk to workerd::server::Server::ActorNamespace::ActorContainer::~ActorContainer() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#3 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#4 0xaaaabf6702f0 in void kj::Disposer::dispose<workerd::server::Server::ActorNamespace::ActorContainer>(workerd::server::Server::ActorNamespace::ActorContainer*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#5 0xaaaabf6702f0 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#6 0xaaaabf6702f0 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#7 0xaaaabf6702f0 in workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()::~() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:665:29
#8 0xaaaabf6702f0 in void kj::dtor<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>(workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#9 0xaaaabf6702f0 in kj::_::NullableValue<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1488:7
#10 0xaaaabf6702f0 in kj::_::NullableValue<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1374:7
#11 0xaaaabf6702f0 in kj::Maybe<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#12 0xaaaabf6702f0 in kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::run() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:3168:3
#13 0xaaaabf66fd08 in kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~Deferred() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:3155:5
#14 0xaaaabf66fd08 in kj::_::OwnedBundle<kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#15 0xaaaabf66fd08 in kj::_::OwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#16 0xaaaabf66fc24 in kj::_::DisposableOwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#17 0xaaaabf66fc24 in kj::_::DisposableOwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#18 0xaaaac2fab1b4 in void kj::Disposer::dispose<workerd::WorkerInterface>(workerd::WorkerInterface*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#19 0xaaaac2fab1b4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#20 0xaaaac2fab1b4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#21 0xaaaac2fab1b4 in void kj::dtor<kj::Own<workerd::WorkerInterface, std::nullptr_t>>(kj::Own<workerd::WorkerInterface, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#22 0xaaaac2fab1b4 in kj::_::NullableValue<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#23 0xaaaac2fab1b4 in kj::_::NullableValue<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#24 0xaaaac2fab1b4 in kj::Maybe<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#25 0xaaaac2fab1b4 in workerd::(anonymous namespace)::PromisedWorkerInterface::~PromisedWorkerInterface() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker-interface.c++:20:7
#26 0xaaaac2fab1b4 in kj::_::HeapDisposer<workerd::(anonymous namespace)::PromisedWorkerInterface>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#27 0xaaaabf708ae4 in void kj::Disposer::dispose<workerd::WorkerInterface>(workerd::WorkerInterface*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#28 0xaaaabf708ae4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#29 0xaaaabf708ae4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#30 0xaaaabf708ae4 in workerd::server::AlarmScheduler::makeAlarmTask(kj::Quantity<long, kj::_::NanosecondLabel>, workerd::server::ActorKey const&, kj::Absolute<kj::Quantity<long, kj::_::NanosecondLabel>, kj::_::DateLabel>)::$_0::operator()() const (.resume) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/alarm-scheduler.c++:212:21
#31 0xaaaac437a468 in std::__Cr::coroutine_handle<void>::resume[abi:sqe240000]() const /proc/self/cwd/external/+v8_build_caches_ext+v8_build_cache_arm64.optdebug_asan/third_party/libc++/src/include/__coroutine/coroutine_handle.h:69:5
#32 0xaaaac437a468 in kj::_::CoroutineBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:3157:13
#33 0xaaaac437a468 in non-virtual thunk to kj::_::CoroutineBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++
#34 0xaaaac4368eb0 in kj::EventLoop::turn() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:1851:12
#35 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2136:17
#36 0xaaaac436c724 in void kj::WaitScope::runOnStackPool<kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1>(kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.h:1671:7
#37 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2134:13
#38 0xaaaabf42df20 in kj::Promise<void>::poll(kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:1429:10
#39 0xaaaabf42df20 in workerd::server::(anonymous namespace)::TestServer::wait(unsigned long) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:445:26
#40 0xaaaabf42d8e0 in workerd::server::(anonymous namespace)::TestCase3024::run() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:3098:8
#41 0xaaaabf4ee4a4 in kj::TestRunner::run()::'lambda'()::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:271:23
#42 0xaaaabf4ee4a4 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::TestRunner::run()::'lambda'()>(kj::TestRunner::run()::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#43 0xaaaabf4ed3cc in kj::TestRunner::run() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:269:33
previously allocated by thread T0 here:
#0 0xaaaabf40913c in operator new(unsigned long) (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1eb913c)
#1 0xaaaabf679d74 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t> kj::refcounted<workerd::server::Server::ActorNamespace::ActorContainer, kj::String, workerd::server::Server::ActorNamespace&, kj::None const&, workerd::server::Server::ActorNamespace::ActorContainer::ClassAndId, kj::Timer&>(kj::String&&, workerd::server::Server::ActorNamespace&, kj::None const&, workerd::server::Server::ActorNamespace::ActorContainer::ClassAndId&&, kj::Timer&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/refcount.h:176:15
#2 0xaaaabf678e2c in workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()::operator()() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1418:24
#3 0xaaaabf67831c in kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry& kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::FindOrCreateImpl<workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'(), kj::String&>::apply<0ul>(kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>&, kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:620:37
#4 0xaaaabf646ec8 in kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry& kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::findOrCreate<0ul, kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()>(kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:657:10
#5 0xaaaabf646ec8 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>& kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::findOrCreate<kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()>(kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:386:16
#6 0xaaaabf646ec8 in workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1417:10
#7 0xaaaabf5c8194 in workerd::server::Server::ActorNamespace::getActorChannel(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:455:45
#8 0xaaaabf5db6d4 in workerd::server::Server::WorkerService::getGlobalActor(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:4417:15
#9 0xaaaabf5dfe4c in non-virtual thunk to workerd::server::Server::WorkerService::getGlobalActor(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#10 0xaaaac2203cb4 in workerd::IoContext::getGlobalActorChannel(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/io/_virtual_includes/io/workerd/io/io-context.h:1073:34
#11 0xaaaac21f2604 in workerd::api::GlobalActorOutgoingFactory::getOrCreateActorChannel(workerd::IoContext&, workerd::SpanParent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:93:21
#12 0xaaaac2200644 in workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) const /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:142:12
#13 0xaaaac2200644 in kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>::Wrapper<workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0>::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:245:14
#14 0xaaaac202ca88 in kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:228:12
#15 0xaaaac202ca88 in workerd::IoContext::getSubrequestNoChecks(kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>, workerd::IoContext::SubrequestOptions, workerd::CountSubrequest) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:1092:11
#16 0xaaaac202dfd0 in workerd::IoContext::getSubrequest(kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>, workerd::IoContext::SubrequestOptions) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:1123:10
#17 0xaaaac21f3cd4 in kj::Own<workerd::WorkerInterface, std::nullptr_t> workerd::api::(anonymous namespace)::startActorSubrequest<workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0>(workerd::IoContext&, workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0&, workerd::CountSubrequest) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:34:17
#18 0xaaaac21f3cd4 in workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:148:17
#19 0xaaaac21f38c8 in workerd::api::GlobalActorOutgoingFactory::newSingleUseClient(kj::Maybe<kj::String>, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:115:10
SUMMARY: AddressSanitizer: heap-use-after-free /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:577:20 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime()
Shadow bytes around the buggy address:
0xfd3fae55be00: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0xfd3fae55be80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55bf00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55bf80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c000: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
=>0xfd3fae55c080: fd fd fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd
0xfd3fae55c100: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c180: fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa
0xfd3fae55c200: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0xfd3fae55c280: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c300: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==306090==ABORTING
*** Received signal #6: Aborted
stack: linux-vdso.so.1@0x5bb /lib/aarch64-linux-gnu/libc.so.6@0x87d7f /lib/aarch64-linux-gnu/libc.so.6@0x3693f /lib/aarch64-linux-gnu/libc.so.6@0x21a83 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1ea1a37 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1ea00cf ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e870d7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e88f87 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e8a39b ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20fb1e7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20fb1d7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20faf63 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20f8717 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4dcc3cb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4dcc2eb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4cb8777 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b113f7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b109a7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4ad5373 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4ad6533 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c4baeb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c4b4db ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b9a88b ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b9ad53 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c53623 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4a8d25b
(08:03:51) FAIL: @@+local_repository+workerd//src/workerd/server:server-test@ (Exit 1) (see /root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/testlogs/external/+local_repository+workerd/src/workerd/server/server-test@/test.log)
(08:03:51) INFO: Found 1 test target...
Target @@+local_repository+workerd//src/workerd/server:server-test@ up-to-date:
bazel-bin/external/+local_repository+workerd/src/workerd/server/server-test@
(08:03:51) INFO: Elapsed time: 8.041s, Critical Path: 7.10s
(08:03:51) INFO: 5 processes: 16 action cache hit, 2 disk cache hit, 2 internal, 2 processwrapper-sandbox.
(08:03:51) INFO: Build completed, 1 test FAILED, 5 total actions
@workerd//src/workerd/server:server-test@ FAILED in 1.5s
/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/testlogs/external/+local_repository+workerd/src/workerd/server/server-test@/test.log
Facet channels can outlive their parent actor container
when an alarm exceeds its execution limit.
Access times were updated by traversing raw parent pointers
resulting in a UaF, share the access time across the facet
tree instead
[ TEST ] server-test.c++:3024: Server: alarm timeout with live facet channel
workerd/api/global-scope.c++:663: NOSENTRY Alarm exceeded its allowed execution time
=================================================================
==306090==ERROR: AddressSanitizer: heap-use-after-free on address 0xfd3fae55c0b8 at pc 0xaaaabf64b1e8 bp 0xffffc5fcd010 sp 0xffffc5fcd008
READ of size 8 at 0xfd3fae55c0b8 thread T0
#0 0xaaaabf64b1e4 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:577:20
#1 0xaaaabf64b1d4 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:579:11
#2 0xaaaabf64af60 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1644:23
#3 0xaaaabf648714 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1643:41
#4 0xaaaabf648714 in workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1643:41
#5 0xaaaabf648714 in virtual thunk to workerd::server::Server::ActorNamespace::ActorChannelImpl::~ActorChannelImpl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#6 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#7 0xaaaac231c3c8 in void kj::Disposer::dispose<workerd::IoChannelFactory::SubrequestChannel>(workerd::IoChannelFactory::SubrequestChannel*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#8 0xaaaac231c3c8 in kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#9 0xaaaac231c3c8 in kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#10 0xaaaac231c3c8 in void kj::dtor<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>(kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#11 0xaaaac231c3c8 in kj::_::NullableValue<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#12 0xaaaac231c3c8 in kj::_::NullableValue<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#13 0xaaaac231c3c8 in kj::Maybe<kj::Own<workerd::IoChannelFactory::SubrequestChannel, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#14 0xaaaac231c3c8 in workerd::api::FacetOutgoingFactory::~FacetOutgoingFactory() /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor-state.c++:980:7
#15 0xaaaac231c2e8 in kj::_::HeapDisposer<workerd::api::FacetOutgoingFactory>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#16 0xaaaac2208774 in void kj::Disposer::dispose<workerd::api::Fetcher::OutgoingFactory>(workerd::api::Fetcher::OutgoingFactory*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#17 0xaaaac2208774 in kj::Own<workerd::api::Fetcher::OutgoingFactory, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#18 0xaaaac2208774 in kj::Own<workerd::api::Fetcher::OutgoingFactory, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#19 0xaaaac2208774 in workerd::SpecificOwnedObject<workerd::api::Fetcher::OutgoingFactory>::~SpecificOwnedObject() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/io/_virtual_includes/io/workerd/io/io-own.h:70:8
#20 0xaaaac2208774 in kj::_::HeapDisposer<workerd::SpecificOwnedObject<workerd::api::Fetcher::OutgoingFactory>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#21 0xaaaac20613f4 in void kj::Disposer::dispose<workerd::OwnedObject>(workerd::OwnedObject*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#22 0xaaaac20613f4 in kj::Own<workerd::OwnedObject, std::nullptr_t>::operator=(kj::Own<workerd::OwnedObject, std::nullptr_t>&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:373:21
#23 0xaaaac20613f4 in kj::_::NullableValue<kj::Own<workerd::OwnedObject, std::nullptr_t>>& kj::_::NullableValue<kj::Own<workerd::OwnedObject, std::nullptr_t>>::operator=<kj::Own<workerd::OwnedObject, std::nullptr_t>>(T&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1655:13
#24 0xaaaac20613f4 in kj::Maybe<kj::Own<workerd::OwnedObject, std::nullptr_t>>::operator=(kj::Maybe<kj::Own<workerd::OwnedObject, std::nullptr_t>>&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:2003:11
#25 0xaaaac20609a4 in workerd::OwnedObjectList::unlink(workerd::OwnedObject&) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-own.c++:112:16
#26 0xaaaac20609a4 in workerd::OwnedObjectList::~OwnedObjectList() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-own.c++:104:5
#27 0xaaaac2025370 in workerd::IoContext::~IoContext() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:773:1
#28 0xaaaac2026530 in workerd::IoContext::~IoContext() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:752:41
#29 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#30 0xaaaac219bae8 in void kj::Disposer::dispose<workerd::IoContext>(workerd::IoContext*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#31 0xaaaac219bae8 in kj::Own<workerd::IoContext, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#32 0xaaaac219bae8 in kj::Own<workerd::IoContext, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#33 0xaaaac219bae8 in void kj::dtor<kj::Own<workerd::IoContext, std::nullptr_t>>(kj::Own<workerd::IoContext, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#34 0xaaaac219bae8 in kj::_::NullableValue<kj::Own<workerd::IoContext, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#35 0xaaaac219bae8 in kj::_::NullableValue<kj::Own<workerd::IoContext, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#36 0xaaaac219bae8 in kj::Maybe<kj::Own<workerd::IoContext, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#37 0xaaaac219bae8 in workerd::Worker::Actor::Impl::~Impl() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:3887:3
#38 0xaaaac219b4d8 in kj::_::HeapDisposer<workerd::Worker::Actor::Impl>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#39 0xaaaac20ea888 in void kj::Disposer::dispose<workerd::Worker::Actor::Impl>(workerd::Worker::Actor::Impl*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#40 0xaaaac20ea888 in kj::Own<workerd::Worker::Actor::Impl, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#41 0xaaaac20ea888 in kj::Own<workerd::Worker::Actor::Impl, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#42 0xaaaac20ea888 in workerd::Worker::Actor::~Actor() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:4069:1
#43 0xaaaac20ead50 in workerd::Worker::Actor::~Actor() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker.c++:4064:41
#44 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#45 0xaaaac21a3620 in void kj::Disposer::dispose<workerd::Worker::Actor>(workerd::Worker::Actor*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#46 0xaaaac21a3620 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#47 0xaaaac21a3620 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#48 0xaaaac21a3620 in kj::_::OwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#49 0xaaaac21a3620 in kj::_::DisposableOwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#50 0xaaaac21a3620 in kj::_::DisposableOwnedBundle<kj::Own<workerd::Worker::Actor, std::nullptr_t>, workerd::RequestTracker::ActiveRequest>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#51 0xaaaac1fdd258 in void kj::Disposer::dispose<workerd::Worker::Actor>(workerd::Worker::Actor*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#52 0xaaaac1fdd258 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#53 0xaaaac1fdd258 in kj::Own<workerd::Worker::Actor, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#54 0xaaaac1fdd258 in void kj::dtor<kj::Own<workerd::Worker::Actor, std::nullptr_t>>(kj::Own<workerd::Worker::Actor, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#55 0xaaaac1fdd258 in kj::_::NullableValue<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#56 0xaaaac1fdd258 in kj::_::NullableValue<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#57 0xaaaac1fdd258 in kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#58 0xaaaac1fdd258 in kj::_::OwnedBundle<kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1156:8
#59 0xaaaac1fdd258 in kj::_::OwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#60 0xaaaac1fdd258 in kj::_::DisposableOwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#61 0xaaaac1fdd258 in kj::_::DisposableOwnedBundle<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>, kj::Maybe<kj::Own<workerd::Worker::Actor, std::nullptr_t>>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#62 0xaaaac20576f4 in void kj::Disposer::dispose<workerd::IoContext_IncomingRequest>(workerd::IoContext_IncomingRequest*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1143:5
#63 0xaaaac20576f4 in kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#64 0xaaaac20576f4 in kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#65 0xaaaac20576f4 in kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>::~AttachmentPromiseNode() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:470:3
#66 0xaaaac2057668 in void kj::dtor<kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>>(kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#67 0xaaaac2057668 in void kj::_::freePromise<kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>>(kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>*) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:371:5
#68 0xaaaac2057668 in kj::_::AttachmentPromiseNode<kj::Own<workerd::IoContext_IncomingRequest, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:464:29
#69 0xaaaac4370550 in kj::_::PromiseDisposer::dispose(kj::_::PromiseArenaMember*) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async-inl.h:290:11
#70 0xaaaac4370550 in kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:590:7
#71 0xaaaac4370550 in kj::Own<kj::_::PromiseNode, kj::_::PromiseDisposer>::operator=(std::nullptr_t) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:537:5
#72 0xaaaac4370550 in kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2438:16
#73 0xaaaac4370550 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0>(kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&)::$_0&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#74 0xaaaac4370550 in kj::_::TransformPromiseNodeBase::getDepResult(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2437:25
#75 0xaaaac437c204 in kj::_::TransformPromiseNode<void, kj::Canceler::AdapterImpl<void>::AdapterImpl(kj::PromiseFulfiller<void>&, kj::Canceler&, kj::Promise<void>)::$_0, kj::Canceler::AdapterImpl<void>::AdapterImpl(kj::PromiseFulfiller<void>&, kj::Canceler&, kj::Promise<void>)::$_1>::getImpl(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async-inl.h:669:5
#76 0xaaaac436fff8 in kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2413:5
#77 0xaaaac436fff8 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0>(kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::$_0&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#78 0xaaaac436fff8 in kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2412:25
#79 0xaaaac4379140 in kj::_::EagerPromiseNodeBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:3034:15
#80 0xaaaac437941c in non-virtual thunk to kj::_::EagerPromiseNodeBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++
#81 0xaaaac4368eb0 in kj::EventLoop::turn() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:1851:12
#82 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2136:17
#83 0xaaaac436c724 in void kj::WaitScope::runOnStackPool<kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1>(kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.h:1671:7
#84 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2134:13
#85 0xaaaabf42df20 in kj::Promise<void>::poll(kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:1429:10
#86 0xaaaabf42df20 in workerd::server::(anonymous namespace)::TestServer::wait(unsigned long) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:445:26
#87 0xaaaabf42d8e0 in workerd::server::(anonymous namespace)::TestCase3024::run() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:3098:8
#88 0xaaaabf4ee4a4 in kj::TestRunner::run()::'lambda'()::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:271:23
#89 0xaaaabf4ee4a4 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::TestRunner::run()::'lambda'()>(kj::TestRunner::run()::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#90 0xaaaabf4ed3cc in kj::TestRunner::run() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:269:33
#91 0xaaaabf4ece60 in auto kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...)::operator()<kj::TestRunner>(auto&, auto&&...) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:168:49
#92 0xaaaabf4ece60 in auto kj::_::BoundMethod<kj::TestRunner&, kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...), kj::TestRunner::getMain()::'lambda6'(auto&, auto&&...)>::operator()<>() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:263:12
#93 0xaaaabf4ece60 in kj::Function<kj::MainBuilder::Validity ()>::Impl<kj::_::BoundMethod<kj::TestRunner&, kj::TestRunner::getMain()::'lambda5'(auto&, auto&&...), kj::TestRunner::getMain()::'lambda6'(auto&, auto&&...)>>::operator()() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:142:14
#94 0xaaaac43ff3b0 in kj::Function<kj::MainBuilder::Validity ()>::operator()() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:119:12
#95 0xaaaac43ff3b0 in kj::MainBuilder::MainImpl::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:601:23
#96 0xaaaac440bf3c in kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::Impl<kj::MainBuilder::MainImpl>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:142:14
#97 0xaaaac43fa8c0 in kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>::operator()(kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/function.h:119:12
#98 0xaaaac43fa8c0 in kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**)::$_0::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:220:7
#99 0xaaaac43fa8c0 in 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&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/exception.h:642:5
#100 0xaaaac43fa314 in kj::runMainAndExit(kj::ProcessContext&, kj::Function<void (kj::StringPtr, kj::ArrayPtr<kj::StringPtr const>)>&&, int, char**) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/main.c++:219:27
#101 0xaaaabf4ea2bc in main /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:332:1
#102 0xffffaf252258 (/lib/aarch64-linux-gnu/libc.so.6+0x22258) (BuildId: 4c1eca4527d1163b2dde55860b69f270158febb4)
#103 0xffffaf252338 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x22338) (BuildId: 4c1eca4527d1163b2dde55860b69f270158febb4)
#104 0xaaaabf32b02c in _start (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1ddb02c)
0xfd3fae55c0b8 is located 120 bytes inside of 392-byte region [0xfd3fae55c040,0xfd3fae55c1c8)
freed by thread T0 here:
#0 0xaaaabf409dac in operator delete(void*, unsigned long) (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1eb9dac)
#1 0xaaaabf67e7d0 in workerd::server::Server::ActorNamespace::ActorContainer::~ActorContainer() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:522:39
#2 0xaaaabf67e7d0 in non-virtual thunk to workerd::server::Server::ActorNamespace::ActorContainer::~ActorContainer() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#3 0xaaaac44111c0 in kj::Refcounted::disposeImpl(void*) const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/refcount.c++:68:5
#4 0xaaaabf6702f0 in void kj::Disposer::dispose<workerd::server::Server::ActorNamespace::ActorContainer>(workerd::server::Server::ActorNamespace::ActorContainer*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#5 0xaaaabf6702f0 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#6 0xaaaabf6702f0 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#7 0xaaaabf6702f0 in workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()::~() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:665:29
#8 0xaaaabf6702f0 in void kj::dtor<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>(workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#9 0xaaaabf6702f0 in kj::_::NullableValue<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1488:7
#10 0xaaaabf6702f0 in kj::_::NullableValue<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1374:7
#11 0xaaaabf6702f0 in kj::Maybe<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#12 0xaaaabf6702f0 in kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::run() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:3168:3
#13 0xaaaabf66fd08 in kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>::~Deferred() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:3155:5
#14 0xaaaabf66fd08 in kj::_::OwnedBundle<kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#15 0xaaaabf66fd08 in kj::_::OwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~OwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1150:8
#16 0xaaaabf66fc24 in kj::_::DisposableOwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::~DisposableOwnedBundle() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1167:8
#17 0xaaaabf66fc24 in kj::_::DisposableOwnedBundle<kj::Own<workerd::WorkerInterface, std::nullptr_t>, kj::_::Deferred<workerd::server::Server::ActorNamespace::ActorContainer::startRequest(workerd::IoChannelFactory::SubrequestMetadata)::'lambda'()>>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1169:52
#18 0xaaaac2fab1b4 in void kj::Disposer::dispose<workerd::WorkerInterface>(workerd::WorkerInterface*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#19 0xaaaac2fab1b4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#20 0xaaaac2fab1b4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#21 0xaaaac2fab1b4 in void kj::dtor<kj::Own<workerd::WorkerInterface, std::nullptr_t>>(kj::Own<workerd::WorkerInterface, std::nullptr_t>&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1092:13
#22 0xaaaac2fab1b4 in kj::_::NullableValue<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::destroy() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1688:9
#23 0xaaaac2fab1b4 in kj::_::NullableValue<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::~NullableValue() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1587:7
#24 0xaaaac2fab1b4 in kj::Maybe<kj::Own<workerd::WorkerInterface, std::nullptr_t>>::~Maybe() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/common.h:1872:7
#25 0xaaaac2fab1b4 in workerd::(anonymous namespace)::PromisedWorkerInterface::~PromisedWorkerInterface() /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/worker-interface.c++:20:7
#26 0xaaaac2fab1b4 in kj::_::HeapDisposer<workerd::(anonymous namespace)::PromisedWorkerInterface>::disposeImpl(void*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:634:60
#27 0xaaaabf708ae4 in void kj::Disposer::dispose<workerd::WorkerInterface>(workerd::WorkerInterface*) const /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:1141:5
#28 0xaaaabf708ae4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::dispose() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:458:17
#29 0xaaaabf708ae4 in kj::Own<workerd::WorkerInterface, std::nullptr_t>::~Own() /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/memory.h:360:28
#30 0xaaaabf708ae4 in workerd::server::AlarmScheduler::makeAlarmTask(kj::Quantity<long, kj::_::NanosecondLabel>, workerd::server::ActorKey const&, kj::Absolute<kj::Quantity<long, kj::_::NanosecondLabel>, kj::_::DateLabel>)::$_0::operator()() const (.resume) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/alarm-scheduler.c++:212:21
#31 0xaaaac437a468 in std::__Cr::coroutine_handle<void>::resume[abi:sqe240000]() const /proc/self/cwd/external/+v8_build_caches_ext+v8_build_cache_arm64.optdebug_asan/third_party/libc++/src/include/__coroutine/coroutine_handle.h:69:5
#32 0xaaaac437a468 in kj::_::CoroutineBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:3157:13
#33 0xaaaac437a468 in non-virtual thunk to kj::_::CoroutineBase::fire() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++
#34 0xaaaac4368eb0 in kj::EventLoop::turn() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:1851:12
#35 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2136:17
#36 0xaaaac436c724 in void kj::WaitScope::runOnStackPool<kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1>(kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation)::$_1&&) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.h:1671:7
#37 0xaaaac436c724 in kj::_::pollImpl(kj::_::PromiseNode&, kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/async.c++:2134:13
#38 0xaaaabf42df20 in kj::Promise<void>::poll(kj::WaitScope&, kj::SourceLocation) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj-async-core/kj/async-inl.h:1429:10
#39 0xaaaabf42df20 in workerd::server::(anonymous namespace)::TestServer::wait(unsigned long) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:445:26
#40 0xaaaabf42d8e0 in workerd::server::(anonymous namespace)::TestCase3024::run() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server-test.c++:3098:8
#41 0xaaaabf4ee4a4 in kj::TestRunner::run()::'lambda'()::operator()() const /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:271:23
#42 0xaaaabf4ee4a4 in kj::Maybe<kj::Exception> kj::runCatchingExceptions<kj::TestRunner::run()::'lambda'()>(kj::TestRunner::run()::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/exception.h:642:5
#43 0xaaaabf4ed3cc in kj::TestRunner::run() /proc/self/cwd/external/+local_repository+capnp-cpp/src/kj/test.c++:269:33
previously allocated by thread T0 here:
#0 0xaaaabf40913c in operator new(unsigned long) (/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/server/server-test_binary+0x1eb913c)
#1 0xaaaabf679d74 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t> kj::refcounted<workerd::server::Server::ActorNamespace::ActorContainer, kj::String, workerd::server::Server::ActorNamespace&, kj::None const&, workerd::server::Server::ActorNamespace::ActorContainer::ClassAndId, kj::Timer&>(kj::String&&, workerd::server::Server::ActorNamespace&, kj::None const&, workerd::server::Server::ActorNamespace::ActorContainer::ClassAndId&&, kj::Timer&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/refcount.h:176:15
#2 0xaaaabf678e2c in workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()::operator()() /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1418:24
#3 0xaaaabf67831c in kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry& kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::FindOrCreateImpl<workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'(), kj::String&>::apply<0ul>(kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>&, kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:620:37
#4 0xaaaabf646ec8 in kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry& kj::Table<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Entry, kj::HashIndex<kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::Callbacks>>::findOrCreate<0ul, kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()>(kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/table.h:657:10
#5 0xaaaabf646ec8 in kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>& kj::HashMap<kj::StringPtr, kj::Own<workerd::server::Server::ActorNamespace::ActorContainer, std::nullptr_t>>::findOrCreate<kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()>(kj::String&, workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>)::'lambda'()&&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/map.h:386:16
#6 0xaaaabf646ec8 in workerd::server::Server::ActorNamespace::getActorContainer(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:1417:10
#7 0xaaaabf5c8194 in workerd::server::Server::ActorNamespace::getActorChannel(kj::OneOf<kj::Own<workerd::ActorIdFactory::ActorId, std::nullptr_t>, kj::String>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:455:45
#8 0xaaaabf5db6d4 in workerd::server::Server::WorkerService::getGlobalActor(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:4417:15
#9 0xaaaabf5dfe4c in non-virtual thunk to workerd::server::Server::WorkerService::getGlobalActor(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++
#10 0xaaaac2203cb4 in workerd::IoContext::getGlobalActorChannel(unsigned int, workerd::ActorIdFactory::ActorId const&, kj::Maybe<kj::String>, workerd::ActorGetMode, bool, workerd::ActorRoutingMode, workerd::SpanParent, kj::Maybe<workerd::ActorVersion>, workerd::Persistent) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+workerd/src/workerd/io/_virtual_includes/io/workerd/io/io-context.h:1073:34
#11 0xaaaac21f2604 in workerd::api::GlobalActorOutgoingFactory::getOrCreateActorChannel(workerd::IoContext&, workerd::SpanParent) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:93:21
#12 0xaaaac2200644 in workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) const /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:142:12
#13 0xaaaac2200644 in kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>::Wrapper<workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0>::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:245:14
#14 0xaaaac202ca88 in kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>::operator()(workerd::TraceContext&, workerd::IoChannelFactory&) /proc/self/cwd/bazel-out/aarch64-dbg/bin/external/+local_repository+capnp-cpp/src/kj/_virtual_includes/kj/kj/function.h:228:12
#15 0xaaaac202ca88 in workerd::IoContext::getSubrequestNoChecks(kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>, workerd::IoContext::SubrequestOptions, workerd::CountSubrequest) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:1092:11
#16 0xaaaac202dfd0 in workerd::IoContext::getSubrequest(kj::FunctionParam<kj::Own<workerd::WorkerInterface, std::nullptr_t> (workerd::TraceContext&, workerd::IoChannelFactory&)>, workerd::IoContext::SubrequestOptions) /proc/self/cwd/external/+local_repository+workerd/src/workerd/io/io-context.c++:1123:10
#17 0xaaaac21f3cd4 in kj::Own<workerd::WorkerInterface, std::nullptr_t> workerd::api::(anonymous namespace)::startActorSubrequest<workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0>(workerd::IoContext&, workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>)::$_0&, workerd::CountSubrequest) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:34:17
#18 0xaaaac21f3cd4 in workerd::api::GlobalActorOutgoingFactory::newActorCallAttempt(kj::Maybe<kj::String>, workerd::api::ActorCallRetryState::Attempt, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:148:17
#19 0xaaaac21f38c8 in workerd::api::GlobalActorOutgoingFactory::newSingleUseClient(kj::Maybe<kj::String>, kj::FunctionParam<kj::Maybe<workerd::SpanParent> (workerd::TraceContext&)>) /proc/self/cwd/external/+local_repository+workerd/src/workerd/api/actor.c++:115:10
SUMMARY: AddressSanitizer: heap-use-after-free /proc/self/cwd/external/+local_repository+workerd/src/workerd/server/server.c++:577:20 in workerd::server::Server::ActorNamespace::ActorContainer::updateAccessTime()
Shadow bytes around the buggy address:
0xfd3fae55be00: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0xfd3fae55be80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55bf00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55bf80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c000: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
=>0xfd3fae55c080: fd fd fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd
0xfd3fae55c100: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c180: fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa
0xfd3fae55c200: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0xfd3fae55c280: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0xfd3fae55c300: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==306090==ABORTING
*** Received signal #6: Aborted
stack: linux-vdso.so.1@0x5bb /lib/aarch64-linux-gnu/libc.so.6@0x87d7f /lib/aarch64-linux-gnu/libc.so.6@0x3693f /lib/aarch64-linux-gnu/libc.so.6@0x21a83 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1ea1a37 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1ea00cf ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e870d7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e88f87 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x1e8a39b ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20fb1e7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20fb1d7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20faf63 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x20f8717 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4dcc3cb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4dcc2eb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4cb8777 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b113f7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b109a7 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4ad5373 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4ad6533 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c4baeb ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c4b4db ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b9a88b ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4b9ad53 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x6ec11c3 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4c53623 ../+local_repository+workerd/src/workerd/server/server-test_binary@0x4a8d25b
(08:03:51) FAIL: @@+local_repository+workerd//src/workerd/server:server-test@ (Exit 1) (see /root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/testlogs/external/+local_repository+workerd/src/workerd/server/server-test@/test.log)
(08:03:51) INFO: Found 1 test target...
Target @@+local_repository+workerd//src/workerd/server:server-test@ up-to-date:
bazel-bin/external/+local_repository+workerd/src/workerd/server/server-test@
(08:03:51) INFO: Elapsed time: 8.041s, Critical Path: 7.10s
(08:03:51) INFO: 5 processes: 16 action cache hit, 2 disk cache hit, 2 internal, 2 processwrapper-sandbox.
(08:03:51) INFO: Build completed, 1 test FAILED, 5 total actions
@workerd//src/workerd/server:server-test@ FAILED in 1.5s
/root/.cache/bazel/_bazel_root/d299504cc034fbe43b2ea92b28f3b189/execroot/_main/bazel-out/aarch64-dbg/testlogs/external/+local_repository+workerd/src/workerd/server/server-test@/test.log
…eces The TypeScript CompressionStream/DecompressionStream pair drained the codec's whole output into the readable after every write, as one chunk: 16 MiB of zeros gzipped to 16 KB came out as a single 16,777,216-byte chunk (C++: 4,096 chunks of 4 KiB), and every write's output was held twice at its peak, in the stage buffer and in the JS copy. Decompressing a 256 MiB member peaked at 661 MiB RSS against 462 MiB for C++, which is what a decompression bomb costs against the isolate's memory. The output now waits in the stage buffer and moves into the readable one read at a time: pull() fills a BYOB request's view in place, or enqueues a piece of at most 64 KiB for a default read. Nothing is queued ahead of demand (highWaterMark 0), so a BYOB view is filled to its size as in C++, rather than from a piece already queued. A pull that finds no output leaves its demand recorded, and the sink serves it as soon as a push or the flush tail produces some, so a read parked before the first write is still served by that write. close() closes the readable once the codec has ended and the stage is drained; cancel, abort and errors clear the stage. The codec still runs eagerly inside write(), so the error timing is unchanged; on a codec error one piece of the output produced before the error point goes to a waiting read before the pair errors, the order WPT decompression-extra-input pins. The 256 MiB decompression now peaks at 350 MiB RSS (1.1 s instead of 1.7 s), and no chunk exceeds 64 KiB through tee(), pipeThrough() or a Response body. Every measured shape is faster without the large allocations: arrayBuffer() of a 64 MiB output 494 -> 243 ms, a JS pipe 279 -> 202 ms, a body pumped by C++ 324 -> 259 ms. Pinned in the compression suite: delivery-shape.js (a 4 MiB single-write output read in bounded, byte-exact pieces; BYOB views filled to their size; two pending reads take consecutive pieces; tee branches get bounded pieces; trailing junk after a large output delivers one piece then errors, where C++ rejects the waiting read: ledger #16, #17) and draining-reader.js (a 1 MiB backlog is taken in 64 KiB pieces, the last with done).
The TypeScript CompressionStream/DecompressionStream pair kept each write's output in the C++ stage buffer until reads pulled it out piece by piece. That put the readable's write-ahead backlog, unbounded by design, in plain C++ heap: outside the V8 sandbox, and with no external-memory adjustment on the stage's blocks, so it no longer counted against the isolate at all, where the ArrayBuffers the pair had queued before were accounted. The sink now drains the stage into the readable's queue before each write or close settles, as Uint8Arrays of at most 64 KiB, so the backlog waits in ArrayBuffers V8 accounts for and the stage holds output only within a single push or end. Chunks stay bounded, and a write's output is still never held whole in JS beside the stage's copy: the stage releases each block as it is pulled, so the peak is the output plus one piece. The readable needs neither a pull hook nor BYOB respond plumbing; the controller fills a BYOB read from the queued pieces. Each enqueue serves one waiting read, so every read waiting when a codec error strikes gets a piece of the output produced before it, which is what the trailing-junk test and ledger #17 now say. CompressionCodec loses clear(): the stage is empty between sink steps, and cancelling or erroring the readable drops the queued output. RingBuffer gains capacity() and shrinkToInitial(), which OutputBuffer uses in place of inferring growth from the element count. delivery-shape.js pins that two reads waiting at a trailing-junk error each get a consecutive piece, and states the intent of its piece-count check as sizes.length * sizes[0] == size (the 4 MiB output is an exact multiple of every implementation's piece); draining-reader.js pins that one draining read sweeps the whole 1 MiB backlog as its sixteen 64 KiB pieces.
When a pipe has seen its source close and waits for its writes before closing the destination, a non-fatal write rejection (an invalid chunk written to an identity stream) turns the close into a failure: the destination is aborted and the source cancelled, unless prevented, and the pipe rejects with the rejection. No test reached this path, so the close could have gone ahead, or the pipe hung or fulfilled with both actions prevented, unnoticed. The piping suite's new invalidLastChunkFailsClosingPipe writes a valid and an invalid chunk into an identity stream whose highWaterMark counts bytes, so the pipe sees the source close before the rejection arrives. It checks the default options and preventAbort with preventCancel. C++ rejects the pipe with its own TypeError, and its invalid write errors the identity stream even with both actions prevented; the piping ledger records that as #17.
When a pipe has seen its source close and waits for its writes before closing the destination, a non-fatal write rejection (an invalid chunk written to an identity stream) turns the close into a failure: the destination is aborted and the source cancelled, unless prevented, and the pipe rejects with the rejection. No test reached this path, so the close could have gone ahead, or the pipe hung or fulfilled with both actions prevented, unnoticed. The piping suite's new invalidLastChunkFailsClosingPipe writes a valid and an invalid chunk into an identity stream whose highWaterMark counts bytes, so the pipe sees the source close before the rejection arrives. It checks the default options and preventAbort with preventCancel. C++ rejects the pipe with its own TypeError, and its invalid write errors the identity stream even with both actions prevented; the piping ledger records that as #17.
A work-in-progress prototype enabling devtools inspector protocol support for workerd.
Adds an additional option to
workerd serveto enable a local inspector port:(The inspector socket can also be passed as an fd instead)
When enabled, the inspector protocol wil be available on the given address and will be discoverable in devtools.
Each worker in a configuration will be listed separately in the devtools discovery view. The name of the worker itself will be displayed in the discovered list to make it possible to distinguish.
Very rudimentary for now.
This PR also adds support for using devtools to capture heap snapshots.