[haiku-bugs] Re: [Haiku] #17802: [Network stack] deadlock

  • From: "Haiku" <trac@xxxxxxxxxxxx>
  • To: undisclosed-recipients: ;
  • Date: Tue, 14 Jun 2022 19:50:24 -0000

#17802: [Network stack] deadlock
---------------------------------------+----------------------------
  Reporter:  diver                     |      Owner:  waddlesplash
      Type:  bug                       |     Status:  assigned
  Priority:  normal                    |  Milestone:  Unscheduled
 Component:  Network & Internet/Stack  |    Version:  R1/Development
Resolution:                            |   Keywords:
Blocked By:                            |   Blocking:
  Platform:  All                       |
---------------------------------------+----------------------------
Comment (by waddlesplash):

 Deadlock is between:
 {{{
 mutex 0xffffffff8227aa80:
   name:            device interface receive
   flags:           0x0
   holder:          1759
   waiting threads: 2060

 mutex 0xffffffff93cda718:
   name:            /dev/net/pcnet/0
   flags:           0x0
   holder:          2060
   waiting threads: 1759 2103 2123 1762
 }}}

 backtraces of those two threads:

 {{{
 KERN: stack trace for thread 1759 "/dev/net/pcnet/0 consumer"
 KERN:     kernel stack: 0xffffffff81781000 to 0xffffffff81786000
 KERN: frame                       caller             <image>:function +
 offset
 KERN:  0 ffffffff81785c60 (+ 128) ffffffff80099e43   <kernel_x86_64>
 reschedule(int) + 0x433
 KERN:  1 ffffffff81785ce0 (+  48) ffffffff800899a6   <kernel_x86_64>
 thread_block + 0xc6
 KERN:  2 ffffffff81785d10 (+  80) ffffffff80095fea   <kernel_x86_64>
 _mutex_lock + 0x21a
 KERN:  3 ffffffff81785d60 (+  32) ffffffff8009608e   <kernel_x86_64>
 recursive_lock_lock + 0x3e
 KERN:  4 ffffffff81785d80 (+  80) ffffffff81117d16   </boot/system/add-
 ons/kernel/network/stack> Interface::AddressForDestination[clone
 .localalias] (net_domain*, sockaddr const*) + 0x26
 KERN:  5 ffffffff81785dd0 (+  80) ffffffff8111b112   </boot/system/add-
 ons/kernel/network/stack>
 get_interface_address_for_destination(net_domain*, sockaddr const*) + 0x52
 KERN:  6 ffffffff81785e20 (+  80) ffffffff81113f1a   </boot/system/add-
 ons/kernel/network/stack> datalink_is_local_address(net_domain*, sockaddr
 const*, net_interface_address**, unsigned int*) + 0xba
 KERN:  7 ffffffff81785e70 (+ 208) ffffffff81859070   </boot/system/add-
 ons/kernel/network/protocols/ipv4> ipv4_receive_data[clone .localalias]
 (net_buffer*) + 0x130
 KERN:  8 ffffffff81785f40 (+ 112) ffffffff81114c72   </boot/system/add-
 ons/kernel/network/stack> device_consumer_thread(void*) + 0x152
 KERN:  9 ffffffff81785fb0 (+  32) ffffffff8008c088   <kernel_x86_64>
 common_thread_entry(void*) + 0x38
 KERN: 10 ffffffff81785fd0 (+2122817584) ffffffff81785fe0
 17526:/dev/net/pcnet/0 consumer_1759_@0xffffffff81781000 + 0x4fe0
 }}}
 {{{
 stack trace for thread 2060 "BUrlProtocol.HTTP"
 KERN:     kernel stack: 0xffffffff81d5d000 to 0xffffffff81d62000
 KERN:       user stack: 0x00007f0001117000 to 0x00007f0001157000
 KERN: frame                       caller             <image>:function +
 offset
 KERN:  0 ffffffff81d619b0 (+ 128) ffffffff80099e43   <kernel_x86_64>
 reschedule(int) + 0x433
 KERN:  1 ffffffff81d61a30 (+  48) ffffffff800899a6   <kernel_x86_64>
 thread_block + 0xc6
 KERN:  2 ffffffff81d61a60 (+  80) ffffffff80095fea   <kernel_x86_64>
 _mutex_lock + 0x21a
 KERN:  3 ffffffff81d61ab0 (+  32) ffffffff8009608e   <kernel_x86_64>
 recursive_lock_lock + 0x3e
 KERN:  4 ffffffff81d61ad0 (+  96) ffffffff811158a6   </boot/system/add-
 ons/kernel/network/stack> register_device_handler[clone .localalias]
 (net_device*, int, int (*)(void*, net_device*, net_buffer*), void*) + 0x56
 KERN:  5 ffffffff81d61b30 (+  48) ffffffff811c705b   </boot/system/add-
 ons/kernel/network/datalink_protocols/ipv6_datagram>
 ipv6_datalink_init(net_interface*, net_domain*, net_datalink_protocol**) +
 0x2b
 KERN:  6 ffffffff81d61b60 (+ 112) ffffffff81124931   </boot/system/add-
 ons/kernel/network/stack> get_domain_datalink_protocols(Interface*,
 net_domain*) + 0x131
 KERN:  7 ffffffff81d61bd0 (+  96) ffffffff81118abc   </boot/system/add-
 ons/kernel/network/stack> Interface::CreateDomainDatalinkIfNeeded[clone
 .localalias] (net_domain*) + 0x20c
 KERN:  8 ffffffff81d61c30 (+  48) ffffffff8111ada3   </boot/system/add-
 ons/kernel/network/stack> get_interface(net_domain*, char const*) + 0xb3
 KERN:  9 ffffffff81d61c60 (+ 528) ffffffff81113950   </boot/system/add-
 ons/kernel/network/stack> datalink_control(net_domain*, int, void*,
 unsigned long*) + 0xa0
 KERN: 10 ffffffff81d61e70 (+  80) ffffffff8111d738   </boot/system/add-
 ons/kernel/network/stack> socket_control(net_socket*, unsigned int, void*,
 unsigned long) + 0xd8
 KERN: 11 ffffffff81d61ec0 (+  64) ffffffff800e7f5a   <kernel_x86_64>
 fd_ioctl(bool, int, unsigned int, void*, unsigned long) + 0x5a
 KERN: 12 ffffffff81d61f00 (+  32) ffffffff800e8c1a   <kernel_x86_64>
 _user_ioctl + 0x3a
 KERN: 13 ffffffff81d61f20 (+  16) ffffffff80145eff   <kernel_x86_64>
 x86_64_syscall_entry + 0xfb
 KERN: user iframe at 0xffffffff81d61f30 (end = 0xffffffff81d61ff8)
 KERN:  rax 0x93                  rbx 0x10010074ae00        rcx 0x18dd39c
 KERN:  rdx 0x7f0001156650        rsi 0x22cb                rdi 0xf
 KERN:  rbp 0x7f0001156620         r8 0x100100748f08         r9 0x2
 KERN:  r10 0x58                  r11 0x202                 r12
 0x100100748ef8
 KERN:  r13 0x7f0001156650        r14 0xf                   r15
 0x7f0001156708
 KERN:  rip 0x18dd39c             rsp 0x7f0001156608     rflags 0x202
 KERN:  vector: 0x63, error code: 0x0
 KERN: 14 ffffffff81d61f30 (+139640111580912) 00000000018dd39c
 <libroot.so> _kern_ioctl + 0x0c
 KERN: 15 00007f0001156620 (+ 192) 0000000002fde7f2   <libnetwork.so>
 gethostbyaddr_r (nearest) + 0x2d2
 KERN: 16 00007f00011566e0 (+ 112) 0000000002fdea4d   <libnetwork.so>
 getifaddrs + 0x11d
 KERN: 17 00007f0001156750 (+ 448) 0000000002fe5a2e   <libnetwork.so>
 getaddrinfo + 0xc4e
 KERN: 18 00007f0001156910 (+ 160) 000000000127cd8c   <libbnetapi.so>
 BNetworkAddressResolver::SetTo(int, char const*, char const*, unsigned
 int) + 0x11c
 KERN: 19 00007f00011569b0 (+  64) 000000000127cf5a   <libbnetapi.so>
 BNetworkAddressResolver::BNetworkAddressResolver(int, char const*, char
 const*, unsigned int) + 0x5a
 KERN: 20 00007f00011569f0 (+ 128) 000000000127d416   <libbnetapi.so>
 BNetworkAddressResolver::Resolve(int, char const*, char const*, unsigned
 int) + 0x1b6
 KERN: 21 00007f0001156a70 (+  96) 000000000127d650   <libbnetapi.so>
 BNetworkAddressResolver::Resolve(int, char const*, unsigned short,
 unsigned int) + 0x60
 KERN: 22 00007f0001156ad0 (+  32) 000000000127d69d   <libbnetapi.so>
 BNetworkAddressResolver::Resolve(char const*, unsigned short, unsigned
 int) + 0x1d
 KERN: 23 00007f0001156af0 (+  64) 000000000127add1   <libbnetapi.so>
 BNetworkAddress::SetTo(char const*, unsigned short, unsigned int) + 0x21
 KERN: 24 00007f0001156b30 (+  64) 000000000127aeda   <libbnetapi.so>
 BNetworkAddress::BNetworkAddress(char const*, unsigned short, unsigned
 int) + 0x4a
 KERN: 25 00007f0001156b70 (+ 224) 0000000000e00377   <libpackage.so>
 _ZN8BPrivate14NaturalCompareEPKcS1_ (nearest) + 0x91b7
 KERN: 26 00007f0001156c50 (+ 256) 0000000000dfa20c   <libpackage.so>
 _ZN8BPrivate14NaturalCompareEPKcS1_ (nearest) + 0x304c
 KERN: 27 00007f0001156d50 (+  32) 0000000000e01760   <libpackage.so>
 _ZN8BPrivate14NaturalCompareEPKcS1_ (nearest) + 0xa5a0
 KERN: 28 00007f0001156d70 (+  32) 00000000018dc629   <libroot.so>
 _thread_do_exit_work (nearest) + 0x89
 KERN: 29 00007f0001156d90 (+   0) 00007f0001081258   <commpage>
 commpage_thread_exit + 0x00
-- 
Ticket URL: <https://dev.haiku-os.org/ticket/17802#comment:1>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: