Project

General

Profile

Actions

Emulator Issues #11867

closed

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

Added by shockdudeX over 4 years ago. Updated about 4 years 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


Files

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

Related issues 3 (1 open2 closed)

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

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

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

Actions
Actions #1

Updated by JMC4789 over 4 years 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.

Actions #2

Updated by sepalani over 4 years 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.

Actions #3

Updated by shockdudeX over 4 years 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

Actions #4

Updated by sepalani over 4 years 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
Actions #5

Updated by shockdudeX over 4 years 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.

Actions #6

Updated by sepalani about 4 years 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
Actions #7

Updated by leoetlino about 4 years ago

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

Updated by leoetlino about 4 years ago

Actions #9

Updated by leoetlino about 4 years ago

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

Updated by leoetlino about 4 years ago

Actions #11

Updated by shockdudeX about 4 years ago

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

Actions

Also available in: Atom PDF