Repository navigation
Add npx/wrangler instructions to README.md - #28
Merged
Merged
Conversation
jasnell
approved these changes
Sep 27, 2022
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 22, 2026
The native BYOB request exposed only view and atLeast, so the C++ source responded with however many bytes a read produced. A Uint16Array read of an odd count then failed the conduit's whole-element check and errored the stream. The request now also exposes elementSize. The source responds with whole elements and keeps a trailing partial element in its stash for the next pull; one left at EOF rejects the pull with the TypeError a JS byte source's close() mid-element gives (spec). The C++ implementation instead resolves Uint8Array views of whatever arrives (ledger #28).
jasnell
added a commit
that referenced
this pull request
Sep 23, 2026
The native BYOB request exposed only view and atLeast, so the C++ source responded with however many bytes a read produced. A Uint16Array read of an odd count then failed the conduit's whole-element check and errored the stream. The request now also exposes elementSize. The source responds with whole elements and keeps a trailing partial element in its stash for the next pull; one left at EOF rejects the pull with the TypeError a JS byte source's close() mid-element gives (spec). The C++ implementation instead resolves Uint8Array views of whatever arrives (ledger #28).
jasnell
added a commit
that referenced
this pull request
Sep 23, 2026
The native BYOB request exposed only view and atLeast, so the C++ source responded with however many bytes a read produced. A Uint16Array read of an odd count then failed the conduit's whole-element check and errored the stream. The request now also exposes elementSize. The source responds with whole elements and keeps a trailing partial element in its stash for the next pull; one left at EOF rejects the pull with the TypeError a JS byte source's close() mid-element gives (spec). The C++ implementation instead resolves Uint8Array views of whatever arrives (ledger #28).
jasnell
added a commit
that referenced
this pull request
Oct 5, 2026
ReadableStream.from() now follows ReadableStreamFromIterable over WebIDL's async_sequence (conversion, open, get the next value, close), with ECMA-262's async-from-sync iterator steps for a sync iterable: - `next` is read once, when the iterator is opened (it was read on every pull: 4 reads for 3 chunks; C++ and Node read it once). - A sync result has `done` read before `value` (it was the reverse), and the final result's value is resolved too. - @@asynciterator and @@iterator are looked up with a Get (GetMethod), so a Proxy sees no `has` traps. null means absent; any other non-callable value is a TypeError (it leaked a Function.prototype.call message). - Any object is accepted, functions included, and every primitive except a string is rejected (functions were rejected). - A sync iterator whose value rejects while not done is closed through return() (V8's own async-from-sync iterator does this). - On cancel, a null return() counts as absent (the cancel rejected), and a sync return() result has its `value` resolved. - A `next` that is not callable rejects the read with a TypeError. - The source and strategy from() builds are null-prototype. A polluted Object.prototype `start` was called, and `type: 'bytes'` broke the stream. A string or an ArrayBufferView is still one chunk (readable ledger #12; the ArrayBufferView case is now ledger #27). C++ iterates a typed array and rejects a DataView, as the spec does. Ledger #28 lists the async-from-sync edges where C++ differs. Pins: from.js fromReadsNextOnce, fromSyncResultReadsDoneBeforeValue, fromIteratorLookupsAreGets, fromAcceptsObjectsOnly and fromCancelReturnLookup (parity), fromArrayBufferViewIsOneChunk (#27), fromIteratorProtocolEdges (#28); pollution.js fromBuildsNoDictionariesFromObjectPrototype (parity). Without the source change, all of these except fromArrayBufferViewIsOneChunk fail, in the TS cells only. Compatibility: the change is behind the experimental typescript_implemented_streams flag.
jasnell
added a commit
that referenced
this pull request
Oct 5, 2026
For a sync iterable, ReadableStream.from() runs the async-from-sync steps in spec order but reacts to the wrapper's continuation directly, where WebIDL reacts to "a promise resolved with" the wrapper's next()/return() promise. Measured against an async iterator whose next()/return() returns a settled promise (the spec lands both on the same tick), a sync read or cancel settles two microtasks early, and a throwing sync next()/return() settles in the same tick rather than two later. C++: one tick early, and the same tick. Matching the spec would cost two microtasks and a Promise.prototype.then lookup per chunk on the from(array) path, so the divergence is kept and recorded as readable ledger #29 (fromSyncIterableSettlesEarly). The comments that described this path as following the spec now say it follows the spec's operation order. Ledger #28's C++ cell understated the throwing `return` getter: the getter's error escapes into the I/O context as an uncaught exception and fails the request whether or not the cancel's promise is handled (a request 500s). It is now recorded as a DEFECT; it cannot be pinned, so fromCancelReturnLookup still skips that case on C++. fromSyncIterableSettlesEarly fails in the TS cells when the sync pull goes through an extra promise resolution. Compatibility: test and comment changes only; behind the experimental typescript_implemented_streams flag.
jasnell
added a commit
that referenced
this pull request
Oct 6, 2026
ReadableStream.from() now follows ReadableStreamFromIterable over WebIDL's async_sequence (conversion, open, get the next value, close), with ECMA-262's async-from-sync iterator steps for a sync iterable: - `next` is read once, when the iterator is opened (it was read on every pull: 4 reads for 3 chunks; C++ and Node read it once). - A sync result has `done` read before `value` (it was the reverse), and the final result's value is resolved too. - @@asynciterator and @@iterator are looked up with a Get (GetMethod), so a Proxy sees no `has` traps. null means absent; any other non-callable value is a TypeError (it leaked a Function.prototype.call message). - Any object is accepted, functions included, and every primitive except a string is rejected (functions were rejected). - A sync iterator whose value rejects while not done is closed through return() (V8's own async-from-sync iterator does this). - On cancel, a null return() counts as absent (the cancel rejected), and a sync return() result has its `value` resolved. - A `next` that is not callable rejects the read with a TypeError. - The source and strategy from() builds are null-prototype. A polluted Object.prototype `start` was called, and `type: 'bytes'` broke the stream. A string or an ArrayBufferView is still one chunk (readable ledger #12; the ArrayBufferView case is now ledger #27). C++ iterates a typed array and rejects a DataView, as the spec does. Ledger #28 lists the async-from-sync edges where C++ differs. Pins: from.js fromReadsNextOnce, fromSyncResultReadsDoneBeforeValue, fromIteratorLookupsAreGets, fromAcceptsObjectsOnly and fromCancelReturnLookup (parity), fromArrayBufferViewIsOneChunk (#27), fromIteratorProtocolEdges (#28); pollution.js fromBuildsNoDictionariesFromObjectPrototype (parity). Without the source change, all of these except fromArrayBufferViewIsOneChunk fail, in the TS cells only. Compatibility: the change is behind the experimental typescript_implemented_streams flag.
jasnell
added a commit
that referenced
this pull request
Oct 6, 2026
For a sync iterable, ReadableStream.from() runs the async-from-sync steps in spec order but reacts to the wrapper's continuation directly, where WebIDL reacts to "a promise resolved with" the wrapper's next()/return() promise. Measured against an async iterator whose next()/return() returns a settled promise (the spec lands both on the same tick), a sync read or cancel settles two microtasks early, and a throwing sync next()/return() settles in the same tick rather than two later. C++: one tick early, and the same tick. Matching the spec would cost two microtasks and a Promise.prototype.then lookup per chunk on the from(array) path, so the divergence is kept and recorded as readable ledger #29 (fromSyncIterableSettlesEarly). The comments that described this path as following the spec now say it follows the spec's operation order. Ledger #28's C++ cell understated the throwing `return` getter: the getter's error escapes into the I/O context as an uncaught exception and fails the request whether or not the cancel's promise is handled (a request 500s). It is now recorded as a DEFECT; it cannot be pinned, so fromCancelReturnLookup still skips that case on C++. fromSyncIterableSettlesEarly fails in the TS cells when the sync pull goes through an extra promise resolution. Compatibility: test and comment changes only; behind the experimental typescript_implemented_streams flag.
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.
This PR adds basic instructions for using prebuilt binaries distributed via
npm, andwrangler dev --experimental-localfor testing.