Project

General

Profile

Emulator Issues #11867

DJ Hero 2 hangs if you cancel the online sign-in. If you don't cancel, no hang and online works.

Added by shockdudeX 10 months ago. Updated 3 months ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
5.0-11873

Description

Game Name?

DJ Hero 2

Game ID? (right click the game in the game list, Properties, Info tab)

SWBE52

MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)

e7232c297731730c8b98a15661f12780
(note: wbfs image)

What's the problem? Describe what went wrong.

If Dolphin has certificates for connecting online, if you cancel sign-in to Nintendo Wi-Fi Connection, the game will hang.
The attached screenshot shows the moment where the game hangs.

If you don't cancel, the game successfully connects online; leaderboards work, matchmaking works, etc.
Removing the certificates avoids the hang but makes that Dolphin SSL error pop up and disables online features.

What steps will reproduce the problem?

Follow the Wii network guide (https://dolphin-emu.org/docs/guides/wii-network-guide/) or dump a NAND and extract the network certificates.
Boot the game, Press Start, cancel the signin, and the game will hang.

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

Yes, 5.0-10920

Is the issue present in the latest stable version?

Yes, 5.0

What are your PC specifications? (CPU, GPU, Operating System, more)

Intel i7-4720HQ
Nvidia GTX 860M
Windows 10 1903

djh2_wifihang.png (793 KB) djh2_wifihang.png shockdudeX, 09/28/2019 06:10 PM
dolphin.log (1.09 MB) dolphin.log shockdudeX, 10/05/2019 03:00 AM
dolphin.zip (195 KB) dolphin.zip shockdudeX, 10/10/2019 06:21 AM
DJ_log.txt (50.8 KB) DJ_log.txt Custom build: https://github.com/sepalani/dolphin/tree/dw sepalani, 04/21/2020 06:14 AM
7577

Related issues

Related to Emulator - Emulator Issues #11862: DJ Hero hangs when connecting online (works on console)New

Related to Emulator - Emulator Issues #11910: Just Dance series crashes/freezes/hangs when the emulated console has internet connectivityAccepted

Related to Emulator - Emulator Issues #10338: Call of Duty: Multiplayer Freezes Mega IssueFixed

History

#1 Updated by JMC4789 10 months ago

Hey, I've noticed the issues you've been writing and appreciate them. Unfortunately, we currently don't have anyone with the expertise to handle these issues available, so I can't really update you much on them.

Odds are that all of these hangs in games with third party servers are exactly the same issue. Just Dance, Call of Duty, DJ Hero, Rockband, etc.

The more examples we have, the better, but I can't guarantee much activity on these issues for a while.

#2 Updated by sepalani 9 months ago

@shockdudeX
Could you please provide the info log for both cases? You need to enable the log widget, configure it with the maximum verbosity (info or debug), tick the right categories (BOOT/CONSOLE/CORE/HLE/OSREPORT/IOS_NET/IOS_SSL/SYMBOLS) and ideally output it into a file.

#3 Updated by shockdudeX 9 months ago

sepalani wrote:

@shockdudeX
Could you please provide the info log for both cases? You need to enable the log widget, configure it with the maximum verbosity (info or debug), tick the right categories (BOOT/CONSOLE/CORE/HLE/OSREPORT/IOS_NET/IOS_SSL/SYMBOLS) and ideally output it into a file.

Log is attached

#4 Updated by sepalani 9 months ago

Thank you.

It seems the WinSocket closesocket function is hanging forever on an UDP socket which is waiting input from demonware stun server.

I'm going to see what's the best way to fix that.

Callstack:

    ntdll.dll!0000000076fa997a()    Unknown
    mswsock.dll!000007fefc1d25ea()  Unknown
    mswsock.dll!000007fefc1d2440()  Unknown
    ws2_32.dll!000007fefe9a19ad()   Unknown
    [Inline Frame] Dolphin.exe!IOS::HLE::WiiSocket::CloseFd() Line 165  C++
    Dolphin.exe!IOS::HLE::WiiSockMan::DeleteSocket(int s) Line 676  C++
    [Inline Frame] Dolphin.exe!IOS::HLE::Device::NetIPTop::HandleCloseRequest(const IOS::HLE::IOCtlRequest &) Line 389  C++
    Dolphin.exe!IOS::HLE::Device::NetIPTop::IOCtl(const IOS::HLE::IOCtlRequest & request) Line 285  C++
    Dolphin.exe!IOS::HLE::Kernel::HandleIPCCommand(const IOS::HLE::Request & request) Line 547  C++
    [Inline Frame] Dolphin.exe!IOS::HLE::Kernel::ExecuteIPCCommand(unsigned int) Line 572   C++
    Dolphin.exe!IOS::HLE::Kernel::UpdateIPC() Line 637  C++
    Dolphin.exe!CoreTiming::Advance() Line 327  C++
    0000000014838087()  Unknown
    0000000341780000()  Unknown
    0000000341780000()  Unknown
    0d0000040d000004()  Unknown
    000000000d9ff17c()  Unknown
    0000000100000000()  Unknown
    ffffffffffffffff()  Unknown
    Dolphin.exe!000000014008ccf0()  C++
    0000000006edb268()  Unknown

#5 Updated by shockdudeX 9 months ago

I realized I forgot to make a log for a successful connection. Log attached; connected online then viewed the score leaderboard for one of the songs.

#6 Updated by sepalani 3 months ago

The above closesocket issue I had seems to be (or have been?) a bug in Windows related to UPnP (and isn't related to this issue).

Using a custom build I managed to get the attached log:

57:41:043 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdUPnP.cpp(143) [bdnet/upnp::pump]: No UPnP devices discovered
57:41:043 Core\HLE\HLE_OS.cpp:292 N[OSREPORT]: [80728a58] SOClose(fd=00000001)
57:41:055 Core\HLE\HLE_OS.cpp:286 N[OSREPORT]: [80ae78b0] RecvFrom(fd=00000001, buf=80aea620, len=00000508, flags=00000000)
57:41:055 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(105) [bdSocket/nat::init]: NAT discovery client initialized
57:41:058 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(229) [bdSocket/nat::sendForTest1]: Sent packet for NTDC test 1
57:41:445 Core\HLE\HLE_OS.cpp:286 N[OSREPORT]: [80ae5030] RecvFrom(fd=00000000, buf=80ae71c0, len=00000508, flags=00000000)
57:41:445 Core\HLE\HLE_OS.cpp:286 N[OSREPORT]: [80ae78b0] RecvFrom(fd=00000001, buf=80aea620, len=00000508, flags=00000000)
57:41:463 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdIPDiscoveryClient.cpp(101) [bdSocket/nat::pump]: Public IP discovered: 165.169.101.83:3074
57:41:466 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(267) [bdSocket/nat::handleResponse]: Reply for test 1. Start test 2.
57:41:467 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:41:558 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:42:059 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:42:560 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:43:061 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:43:561 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(241) [bdSocket/nat::sendForTest2]: Sent packet for NTDC test 2
57:44:060 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(472) [bdSocket/nat::pumpActiveTest]: Test 2 failed.
57:44:077 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(252) [bdSocket/nat::sendForTest3]: Sent packet for NTDC test 3
57:44:517 Core\HLE\HLE_OS.cpp:286 N[OSREPORT]: [80ae78b0] RecvFrom(fd=00000001, buf=80aea620, len=00000508, flags=00000000)
57:44:529 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(321) [bdSocket/nat::handleResponse]: Reply for test 3. Moderate NAT.
57:44:545 Core\HLE\HLE_OS.cpp:279 N[OSREPORT]: [0] info/bdNATTypeDiscoveryClient.cpp(171) [bdSocket/nat::quit]: NAT discovery client quit
57:44:546 Core\HLE\HLE_OS.cpp:292 N[OSREPORT]: [80728a58] SOClose(fd=00000001)

The interesting part is at the end. After that part the game hangs forever.

Basically, the receive thread (80ae78b0) is doing a recvfrom on a socket, while the current thread (80728a58) closes that socket.
Closing the socket will get rid of all of its pending ops in Dolphin.

In sum, the RecvFrom call never returns and the receive thread is hanging forever.
Using both the Thread and Network widget we can see that:

  • The receive thread is blocking on a RecvFrom call
  • The socket for that RecvFrom call was removed from the socket table

#7 Updated by leoetlino 3 months ago

  • Fixed in set to 5.0-11873
  • Status changed from New to Fixed

#8 Updated by leoetlino 3 months ago

#9 Updated by leoetlino 3 months ago

  • Related to Emulator Issues #11910: Just Dance series crashes/freezes/hangs when the emulated console has internet connectivity added

#10 Updated by leoetlino 3 months ago

#11 Updated by shockdudeX 3 months ago

Confirmed fixed in 5.0-11873 on my end. Thanks!

Also available in: Atom PDF