Bug Description
Bedrock players are encountering persistent issues connecting to our Java server. They get stuck on the “locating server” screen for an extended period, effectively preventing them from joining the game. Interestingly, this problem seems to arise after a certain number of players (around 6 or more) have connected through Geyser. Even when the Java server is offline, Bedrock players remain stuck on “locating server,” while Geyser incorrectly indicates they are connected. Initially, players can join without any problems, but the issue becomes more frequent as the player count increases.
It’s worth noting that when Geyser was run on Google Cloud, this problem was not observed. This leads us to believe that the issue might be related to the specific Java version, operating system, or other environmental factors of our current server setup.
Steps to Reproduce
- Allow Bedrock players to join the Java server via Geyser. Ensure more than 6 players are connected simultaneously.
- After some time, new Bedrock players attempting to join will become stuck on the “locating server” screen indefinitely. Players already on the server can continue to play without interruption, but those who disconnect are unable to rejoin.
- While Bedrock players are stuck, Geyser’s logs indicate that these players are connected, even though no login packets are being sent to the Java server. Network analysis using
tcpdump
confirms that Geyser is only pinging the server every 3 seconds and not attempting to initiate a proper login sequence for the stuck players. - Restarting the Geyser server temporarily resolves the issue, allowing new players to join again.
- However, the problem inevitably returns after more players join and the cycle repeats.
Expected Behavior
Bedrock players should be able to consistently join the Java server through Geyser without getting stuck on the “locating server” screen. When a player attempts to connect, Geyser should promptly send the necessary login packets to the Java server to initiate the connection process. Even if the Java server is offline or unreachable, the “locating server” message should eventually time out and provide a proper connection error message to the Bedrock player, instead of an indefinite hang.
Screenshots/Videos
(No screenshots or videos were provided in the original bug report.)
Server Version and Plugins
Current Server Version: git-Purpur-"67f934e" (MC: 1.18.2)
Previous Server Version: git-Paper-"7b8e0c3" (MC: 1.18.1)
The server is currently running the latest version of Purpur.
Geyser Dump
https://dump.geysermc.org/CvW6EGexwhB8fTWwDbuxtoXajiXqhtbV
This Geyser dump provides further diagnostic information about the server configuration and potential issues.
Geyser Version
2.0.2-SNAPSHOT (git-master-7f5d817)
The Geyser instance is running a recent snapshot version.
Minecraft: Bedrock Edition Version
(The Bedrock Edition version was not specified in the original bug report, but this issue likely affects various Bedrock versions as it seems to be a server-side connection problem.)
Additional Context and Troubleshooting Steps Taken
We have already attempted several troubleshooting steps to resolve this “Bedrock Stuck On Locating Server” issue:
- Lowered MTU Values: We experimented with reducing the Maximum Transmission Unit (MTU) to 1460, 1400, and even 700, suspecting potential network packet fragmentation issues. This did not resolve the problem.
- Investigated Encryption-Related Issues: We looked into potential conflicts related to encryption, especially considering the Encryption-related regression/connection issues with 10th/11th gen Intel + new AMD CPUs #2861. However, applying related fixes or workarounds did not solve the “locating server” problem.
- Updated Server Software: We updated from Paper to Purpur, ensuring we are running a relatively recent and stable server build. This update did not eliminate the issue.
- IP Address Configuration: We changed the IP address in the
config.yml
file from127.0.0.1
to the server’s public IP address, and back, to rule out any potential issues with IP binding or address resolution. - Geyser-Spigot: We are using the Geyser-Spigot plugin as the integration method for Geyser on our server.
Further Observations:
When the server is functioning correctly, the Geyser logs show the following message upon player disconnection: "Hancho1577 has disconnected from remote Java server on address 127.0.0.1 because of Bedrock client disconnected"
.
However, when the “bedrock stuck on locating server” issue occurs, the disconnection message changes to: "Bedrock user with ip: /xxx.xxx.xxx.xxx has disconnected for reason Bedrock client disconnected"
.
This difference in logging might indicate a different disconnection pathway or an issue occurring before the player fully connects to the Java server. The problem also appears to occur randomly, often when a player disconnects from the server, suggesting a potential race condition or resource leak related to player disconnections and new connection attempts under load.
We are seeking assistance in diagnosing and resolving this frustrating “bedrock stuck on locating server” problem that is impacting our Bedrock players’ ability to join our Java Minecraft server. We are willing to cooperate with Geyser developers and provide access to our server for debugging purposes if needed. We appreciate any help and guidance you can offer!