Skip to content

grpc_event_engine::experimental::WinSocke triggered an abort during destruction. #40405

@Hackerl

Description

@Hackerl

What version of gRPC and what language are you using?

v1.71.0(vcpkg-v1.71.0-294d60a403) C++

What operating system (Linux, Windows,...) and version?

Windows 10.0.19044(5965) Kernel: 6.2.19041.5965

What runtime / compiler are you using (e.g. python version or version of gcc)

MSVC 19.42.34433.0

What did you do?

Normal use of gRPC.

What did you expect to see?

The process runs stably.

What did you see instead?

The process aborted.

[0x0]   ntdll!NtDelayExecution+0x14   0x523defec68   0x7fffc4fc629e   
[0x1]   KERNELBASE!SleepEx+0x9e   0x523defec70   0x7ff6262be6fe   
[0x2]   app_name!crashpad::`anonymous namespace'::UnhandledExceptionHandler+0xee   0x523defed10   0x7ff6262bb90a   
[0x3]   app_name!crashpad::`anonymous namespace'::HandleAbortSignal+0xaa   0x523defee60   0x7ff6274c14de   
[0x4]   app_name!raise+0x23e   0x523deff420   0x7ff627455f5c   
[0x5]   app_name!abort+0x18   0x523deff490   0x7ff627376450   
[0x6]   app_name!absl::lts_20250127::log_internal::LogMessage::FailWithoutStackTrace+0x10   0x523deff4c0   0x7ff6273763a6   
[0x7]   app_name!absl::lts_20250127::log_internal::LogMessage::Die+0x26   0x523deff4f0   0x7ff627376a11   
[0x8]   app_name!absl::lts_20250127::log_internal::LogMessage::SendToLog+0x13c   (Inline Function)   (Inline Function)   
[0x9]   app_name!absl::lts_20250127::log_internal::LogMessage::Flush+0x321   0x523deff520   0x7ff627374eb9   
[0xa]   app_name!absl::lts_20250127::log_internal::LogMessageFatal::~LogMessageFatal+0x9   0x523deff650   0x7ff626c7f51b   
[0xb]   app_name!grpc_event_engine::experimental::WinSocket::~WinSocket+0x15b   0x523deff680   0x7ff626abc214   
[0xc]   app_name!grpc_event_engine::experimental::WindowsEventEngine::ConnectionState::~ConnectionState+0xe4   0x523deff770   0x7ff626ac239c   
[0xd]   app_name!std::_Ref_count_base::_Decref+0x19   (Inline Function)   (Inline Function)   
[0xe]   app_name!std::_Ptr_base<grpc_event_engine::experimental::WindowsEventEngine::ConnectionState>::_Decref+0x1b   (Inline Function)   (Inline Function)   
[0xf]   app_name!std::shared_ptr<grpc_event_engine::experimental::WindowsEventEngine::ConnectionState>::{dtor}+0x1b   (Inline Function)   (Inline Function)   
[0x10]   app_name!std::shared_ptr<grpc_event_engine::experimental::WindowsEventEngine::ConnectionState>::reset+0x2c   (Inline Function)   (Inline Function)   
[0x11]   app_name!grpc_event_engine::experimental::WindowsEventEngine::ConnectionState::DeadlineTimerCallback::Run+0x6c   0x523deff7a0   0x7ff626ac27a5   
[0x12]   app_name!absl::lts_20250127::internal_any_invocable::Impl<void __cdecl(void)>::operator()+0xa   (Inline Function)   (Inline Function)   
[0x13]   app_name!grpc_event_engine::experimental::WindowsEventEngine::TimerClosure::Run+0x175   0x523deff7e0   0x7ff626d904e9   
[0x14]   app_name!grpc_event_engine::experimental::WorkStealingThreadPool::ThreadState::Step+0x2b9   0x523deff8e0   0x7ff626d90838   
[0x15]   app_name!grpc_event_engine::experimental::WorkStealingThreadPool::ThreadState::ThreadBody+0x278   0x523deff980   0x7ff626d875a7   
[0x16]   app_name!grpc_event_engine::experimental::WorkStealingThreadPool::WorkStealingThreadPoolImpl::StartThread::__l2::<lambda_1d00dca3b95e322e89ca645f3f2b2959>::operator()+0x5   (Inline Function)   (Inline Function)   
[0x17]   app_name!<lambda_1d00dca3b95e322e89ca645f3f2b2959>::<lambda_invoker_cdecl>+0x17   0x523deffa00   0x7ff627324989   
[0x18]   app_name!`anonymous namespace'::ThreadInternalsWindows::thread_body+0xb9   0x523deffa30   0x7fffc5297374   
[0x19]   KERNEL32!BaseThreadInitThunk+0x14   0x523deffa80   0x7fffc557cc91   
[0x1a]   ntdll!RtlUserThreadStart+0x21   0x523deffab0   0x0

Anything else we should know about your project / environment?

I took a quick look at the source code and found that the assertion failed during WinSocket destructor.

WinSocket::~WinSocket() {
  CHECK(is_shutdown_.load());
  // ...
}

https://github.com/grpc/grpc/blob/v1.71.0/src/core/lib/event_engine/windows/win_socket.cc#L48

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions