Menu

#30 UDT 100% WTR Dead Lock

v1.0_(example)
open
nobody
None
9
2015-01-15
2013-04-26
No

UDT comes into a deadlock within a simple pattern:

  • listen socket in one process
  • connect to it from another process
  • send single datagram from connecting side
  • recieve datagram on listen side, send another one back
  • close socket (on listen side)
  • wait 5 seconds
  • repeat from pp. 2
  • listen side will come into deadlock with first UDP packet

Callstacks at the listen side are:

Thread "CRcvQueue::worker" stucked in CUDTUnited::locate():

kernel32.dll!_WaitForSingleObject@8()  + 0x12 bytes

dll.dll!CGuard::CGuard(void * & lock=0x000000d0) Line 327 + 0x10 bytes C++
dll.dll!CUDTUnited::locate(const int u=550519200) Line 1148 C++
dll.dll!CUDTUnited::newConnection(const int listen=550519200, const sockaddr * peer=0x00c159c0, CHandShake * hs=0x055efaf4) Line 319 + 0xc bytes C++
dll.dll!CUDT::listen(sockaddr * addr=0x00c159c0, CPacket & packet={...}) Line 2509 + 0x1b bytes C++
dll.dll!CRcvQueue::worker(void * param=0x00c08248) Line 1023 + 0x13 bytes C++
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes


Thread "CSndQueue::worker" stucked on WaitForSingleObject(self->m_WindowCond, INFINITE):

kernel32.dll!_WaitForSingleObject@8()  + 0x12 bytes

dll.dll!CSndQueue::worker(void * param=0x00c04150) Line 553 C++
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes


Thread "CUDTUnited::garbageCollect" stucked in CUDTUnited::checkBrokenSockets():

kernel32.dll!_WaitForSingleObject@8()  + 0x12 bytes

dll.dll!CGuard::CGuard(void * & lock=0x000000d0) Line 327 + 0x10 bytes C++
dll.dll!CUDTUnited::checkBrokenSockets() Line 1183 C++
dll.dll!CUDTUnited::garbageCollect(void * p=0x70536308) Line 1481 C++
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes

Library version is 4.11.
This is obviously a windows build.

Discussion


Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.