Whenever you crash and then close Roblox, the game client still remains ongoing in the background. You can check this by opening up task manager and seeing it under Background processes. The only way to fully stop it is by ending the task from the task manager, or waiting around one minute until it stops by itself.
This is annoying because if there was music going on while you crashed, you’ll continue to hear that music until the process ends. It’s also annoying because if you try to join another game, you’ll get a message saying “You are already playing a game” and you’ll be forced to leave.
I have no idea when this started happening. Ever since the beginning of Roblox? It does however happen 100% of the time as far as I’ve seen. To reproduce the bug, all you have to do is crash. Download the following rbxl file to try it out for yourself. Once you’re in the game, open the console and go to the server section. Wait a few seconds after you freeze, then close the application, and you should still hear the music playing and see Roblox in background processes of task manager. crash.rbxl (13.2 KB)
Or if you'd rather not download the file, here's the script
function a()
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
spawn(function()
while true do
wait()
print("a")
end
end)
end
while true do
wait()
a()
end
My device isn’t the most powerful, it’s just a £200 laptop, so it may take a bit more to crash you if you have a more powerful device.
This problem has still not been solved. Earlier today, I was also experiencing this problem.
Somehow I’ve waited around 30 minutes and the problem still doesn’t stop. But ending the process for sure does work.
For me, I just left the game and this problem started occurring. My device or the game didn’t crash, neither did I get kicked out; I left the game and this problem started occurring.
Also for me, when I join another game, both music just overlap each other; hope this problem gets fixed soon!
This is still happening and I have no idea on how to fix it! The game doesn’t even have to crash for me. When I leave the game it just keeps playing (all the audio and stuff) so I have to open up task manager all the time. Why is this still happening?
This isn’t actually a bug at all, it’s more of a technical limitation.
If Roblox freezes, it cannot fully close because the engine is already busy doing other things, so it never gets to run its close hook. In most cases if Roblox is frozen it isn’t a crash, it’s a result of something in the engine using up all the resources and never allowing Roblox to continue to do something else like close (i.e. in your case a ridiculously expensive script).
Your reproduction code does not actually cause a crash at all, it is simply exhausting the client’s resources endlessly, thus, Roblox can never process its close hook, because it’s too busy doing all these expensive loops.
This is very similar to just doing this and trying to close the client:
while true do end
It won’t close at all.
Your repro might still seem like it allows the client to start closing, but, really, you’ve likely only given it enough resources to simply hide the window.
My Roblox game crashes every time I leave a game and I’m left with no choice but to forcefully close the Roblox application via Task Manager to play again.
my Roblox is also having the same issue every time I close Roblox it’s still running in the background having to force close it in Task Manager, and sometimes a crash message popups
Then Roblox is actually probably still like… saving log messages or sending some information to a server, the crash message should mean that Roblox is still actually doing something important.
The Roblox tabs stay open in task manager even after having the game closed for a few hours, it shouldn’t take them that long to do that “important” stuff while it never use to do that, nor does any other app do it. nor am I the only one having this issue
Is this happening on every game? Are you on the Roblox UWP version? For me (on Roblox UWP, not the web version) Roblox closes fully after about 6 or so seconds.
Yes every game and I have no idea I am clicking from the web browser (Firefox) but I believe it now uses another app to play Roblox, comes up with that annoying “back to home” message popup when you click X (I click it 2 times for the app to close) but mine stays open in task manager leaving me to force close it in task manager each time.
Yes… Even baseplate without scripts… It still genuinely isn’t a bug, and I explained why.
The reproduction steps in the original post requires inserting an intentionally very expensive script, which, no longer makes it a “baseplate without scripts.” The script in question permanently exhausts Roblox’s resources. It will simply never finish running because just about everything in the client runs on one thread. Roblox will never get to run the code it does before closing because the script is blocking the thread from continuing. This makes it impossible for Roblox to actually finish closing, and there is genuinely nothing that can be done about this.
Other single-threaded programs often experience this exact issue themselves, it’s just that purely single-threaded programs are getting extremely uncommon (Roblox itself isn’t really even single-threaded anymore but it still does a lot of stuff on its main thread). The fact that it appears in a “baseplate without scripts” is simply because it applies to the entire Roblox program as a whole and even to lots of other programs too, there are many many ways that this behaviour can happen in Roblox, which is why it’s so common to see it.
This doesn’t mean there aren’t various bugs which are causing this behaviour to occur, but this itself, as reported in the original post, isn’t a bug, nor is it some specific thing. It’s only what happens when Roblox is busy doing other things, and never gets to move on to its close hook.
Now, sure, maybe there is a bug here to be found that is another completely unrelated issue, but, it has nothing to do with what the original post seems to be reporting.
When Roblox encounters a crash, it generates a dump file and automatically uploads the dump. This can take some time, and often times results in the client staying in the background for a period of time. It can frequently get stuck trying to upload the crash dump, I don’t exactly recall what happens in this case.
This itself is likely a bug but it isn’t what’s being brought up in the original post.
Nope, not really, because the script timeout is pretty specific to certain cases. It’s only when the code in question doesn’t ever yield that it will be timed out. Every time code yields, the engine resets the timer.
I forget if it’s specific to each thread or if there’s a like global timer or something, but, something as simple as this is enough:
local lastYieldTime = os.clock()
while true do
if os.clock() - lastYieldTime >= 4 then -- If it's been at least 4 seconds since the last yield
task.wait()
lastYieldTime = os.clock() -- Reset the yield time
end
end
Plus, it doesn’t even have to be lua to cause the engine to hang, there’s really nothing special about lua. In any cases where the engine would hang, it’d definitely be a bug then, but, the particular behaviour outlined in the original post isn’t really a bug at all.
This became even more problematic recently for me after the major Roblox client update. My Roblox client 99% of the time stays in the background after I leave any experience. I am not sure if this is related or not.
This happens to me currently since the new client update, as many people are saying.
For people who also find this annoying I’ve found a pretty decent fix that works at least for myself (@Grimoirees - this may help) :
The issue goes away if instead of pressing the “x” button on your window, you open the escape menu and press “Leave” instead. I assume this is because it takes you to the new roblox built in client homepage, whilst actually closing the application doesn’t do that.
Unsure if this new issue is related to the original post, it seems like a separate issue, however the actual bug itself seems to be the same.
I believe this problem is worsening now in the new client update.
If you normally use esc + L to leave it’ll go to the new app, and it seems the app is automatically open when you play a game (if you hover your mouse on the top it tells you)
It not closing properly could be a problem with the forcing of the app, since the roblox app and client are both the same application.