Repository navigation
TODO(launch) -> TODO(beta) - #25
Merged
Merged
Conversation
These items aren't done yet but should still be addressed in the beta period.
git-bruh
added a commit
that referenced
this pull request
Sep 15, 2026
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
git-bruh
added a commit
that referenced
this pull request
Sep 15, 2026
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
jasnell
added a commit
that referenced
this pull request
Sep 24, 2026
tee() and detach invalidated a cached byobRequest, so a source holding it across an await (a released read, then a fork) threw from respond(), erroring the stream and every branch. The spec leaves the request valid: the fork does not touch the controller's head pull-into. The controller now takes over the sole cursor's released head at the fork. byobRequest is over it until respond(), respondWithNewView(), enqueue(), error(), cancel or a closed-state respond(0) retires it; a respond enqueues its bytes, old and new, for every cursor, which drop their own copies of the old ones. C++ keeps the request working too but then breaks on the next enqueue() and drops the released read's bytes: readable-byte ledger #25. Behind the experimental typescript_implemented_streams flag.
jasnell
added a commit
that referenced
this pull request
Oct 5, 2026
Three shape differences from the WebIDL asynchronous iterator prototype: - next() and return() threw a TypeError synchronously when called on anything but a stream's iterator. They now return a promise rejected with it. C++ still throws (readable ledger #25). - The prototype had no class string. It now has WebIDL's @@toStringTag "ReadableStream AsyncIterator" (non-writable). C++ uses "ReadableStreamAsyncIterator" (writable) (ledger #13). - The first next() was always chained behind an already-resolved promise, so it read, and pulled, one microtask late, and its result looked `then` up twice. With no ongoing promise it now runs its steps at once, as WebIDL does: a started stream pulls synchronously (parity with C++ and with reader.read()), and the result looks `then` up once. The unbound-reader check in the next steps now rejects rather than throws, since those steps can now run inside next() itself. The prototype's own @@asynciterator is kept (WebIDL inherits it from %AsyncIteratorPrototype%), so for-await over values() does not depend on that prototype. Pins: readable async-iteration.js iteratorPrototypeShape (class string), new iteratorMethodsRejectForeignThis and firstNextPullsSynchronously; then-interceptors.js thenGetterPerIteratorNext's first next() is now 1 lookup. Without the source change exactly these four fail, in the TS cells only. Compatibility: the API surface change (the new @@toStringTag) is behind the experimental typescript_implemented_streams flag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jasnell
added a commit
that referenced
this pull request
Oct 5, 2026
Three shape differences from the WebIDL asynchronous iterator prototype: - next() and return() threw a TypeError synchronously when called on anything but a stream's iterator. They now return a promise rejected with it. C++ still throws (readable ledger #25). - The prototype had no class string. It now has WebIDL's @@toStringTag "ReadableStream AsyncIterator" (non-writable). C++ uses "ReadableStreamAsyncIterator" (writable) (ledger #13). - The first next() was always chained behind an already-resolved promise, so it read, and pulled, one microtask late, and its result looked `then` up twice. With no ongoing promise it now runs its steps at once, as WebIDL does: a started stream pulls synchronously (parity with C++ and with reader.read()), and the result looks `then` up once. The unbound-reader check in the next steps now rejects rather than throws, since those steps can now run inside next() itself. The prototype's own @@asynciterator is kept (WebIDL inherits it from %AsyncIteratorPrototype%), so for-await over values() does not depend on that prototype. Pins: readable async-iteration.js iteratorPrototypeShape (class string), new iteratorMethodsRejectForeignThis and firstNextPullsSynchronously; then-interceptors.js thenGetterPerIteratorNext's first next() is now 1 lookup. Without the source change exactly these four fail, in the TS cells only. Compatibility: the API surface change (the new @@toStringTag) is behind the experimental typescript_implemented_streams flag.
jasnell
added a commit
that referenced
this pull request
Oct 9, 2026
The C++ IdentityTransformStream accepts string chunks as UTF-8, but the string branch of WritableStreamInternalController::write() writes only the bytes before the first NUL: writing 'a\0b' delivers the single byte 0x61. The TypeScript implementation writes every UTF-8 byte (61 00 62). The divergence was undocumented. It is recorded as identity ledger #25, with the chunk-handling notes and the chunk-types.js catalogue entry pointing at it. The C++ behavior is left as is: string chunks are already a non-standard convenience, and changing what they deliver would be a compatibility change of its own. Pin: identity chunk-types.js stringWithNulDivergence writes 'a\0b', closes, drains the readable, and asserts the bytes per implementation.
jasnell
added a commit
that referenced
this pull request
Oct 16, 2026
DUP-20 follow-up, from review. QueuedControllerCore called its owner's end-of-life callback with 'ended' or, when the last consumer errored alone after close was requested, 'lastConsumerErrored', on which the byte controller kept its released head. That never lasted: consumerErrored's one caller, readableStreamErrorBranch, removes the consumer's cursor right after, and the all-cursors-gone hook's 'ended' dropped the head before any user code ran. The callback now takes no argument, and the byte controller's always retires the byobRequest and drops the released head, so consumerErrored no longer relies on its caller to finish. The hook's comments now say that it runs whenever the last consumer goes, not only on collection. The queued controllers also kept the core's queue in a #queue field of their own, as their brand and for enqueue(). #core is the brand now, and both reach the queue through it. Nothing observable changes. The hook's own end-of-life call now matters only when the last consumer is collected, which no test covered. teeHeldByobRequestBranchesCollected does, and fails without the call: a request the source holds across tee() is retired once both branches are collected, and none is minted over the held read again. C++ keeps the request; readable-byte ledger #25 lists it. sourceReleasedOnceEnded, in the readable and readable-byte gc.js suites, gains a source with only start(). No algorithm captures such a source, so it is released even while its stream is open (parity); before makeSourceAlgorithms it was kept for the stream's life. A source kept while its stream is open fails the new case.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
These items aren't done yet but should still be addressed in the beta period.