RPCS3 / rpcs3

PS3 emulator/debugger
https://rpcs3.net/
GNU General Public License v2.0
15.21k stars 1.9k forks source link

Freezes on 44 00 00 02: sc #12240

Closed Darkhost1999 closed 2 years ago

Darkhost1999 commented 2 years ago

Assassin's Creed Brotherhood consistently freezes at this spot in the debugger. Interpreters + Accurate PPU Non-Java Mode have proven most helpful in getting the farthest in the game. But still freezes. Screenshot 2022-06-17 105315 RPCS3.log

AC Revelations is the same exact way freezing at the same thing. image RPCS3.log

I have tested the advanced tab settings for PPU I still have no idea what they do or how they help. And I've tested my trusty ppu threads set to 3 or 1 and was not able to have any effect. In fact everything I did in testing had absolutely 0 effect on anything. Except for the interpreters being slower. All of the AC games appeare capable of users abusing the settings and the game remaining the exact same stability where the only difference would be how well it performs. AKA I cannot intentionally break AC or any of Ezio trilogy.

readywer commented 2 years ago

The same happens in AC4 too. But i would say that first the picture freezes and just some secounds later the sound. Képernyőfelvétel (1022) log: RPCS3.log.gz

Xcedf commented 2 years ago

Those issues look like regular desyncs, did you try Atomic Fifo accuracy?

Darkhost1999 commented 2 years ago

Those issues look like regular desyncs, did you try Atomic Fifo accuracy?

Yea I thought about that looking at it more in depth. The only time this syscall is mentioned in the rsx code is nearby FIFO and vblank. These things do not effect this freeze though. AtomicFIFOaccuracy.log

readywer commented 2 years ago

Those issues look like regular desyncs, did you try Atomic Fifo accuracy?

Yes no change in it. Atomic ordered won't help too.

Darkhost1999 commented 2 years ago

Freezing on Oblivion 44 00 00 02: sc https://github.com/RPCS3/rpcs3/issues/10812

Darkhost1999 commented 2 years ago

I have not frozen in ACB since enabling Accurate PPU Non-Java Mode. (See next comment) Not to be confused with PPU Non-Java Mode Fixup. I managed to get all the way into Sequence 2 of ACB and the game is still going strong without freezing.

(Although Accurate PPU Non-Java Mode does help it's not a 100% solution.)

Darkhost1999 commented 2 years ago

I totally got jinxed with a freeze the moment I said something.

https://user-images.githubusercontent.com/60384196/175392477-0024bd81-d56a-4f22-a477-7b3f54d5caa5.mp4

Darkhost1999 commented 2 years ago

Not all aspects of the games freeze. Things like Audio, video loops, and animations will continue looping. So only specific elements of the games are failing where if you check the debugger it'll say 44 00 00 22 sc.

With Oblivion it can be observed sometimes changing your options will work and sometimes they won't. With how many times this system call is called during gameplay it seems to randomly choose 1 of the those times to fail. Not every time.

Darkhost1999 commented 2 years ago

The main reason for this comment is to start a meta tracker of known effected games/apps:

And potentially more to be discovered.

readywer commented 2 years ago

I looked into this porblem and I think the 44 00 00 02: sc isn't a bug or any problamatic thing on the main thread because from my understanding is that it means that the main thread is waiting for answer from an other thread. Like when you start GT5 and the hdd popup shows up until you press x the main thread is at 44 00 00 02: sc, beacuse it waits for answer from an other thread. So all in all i consider this is a non issue, but i hope one of the devs will validate me.

illusion0001 commented 2 years ago

Not an issue, main thread can always be stalled on syscall while work is being done on other threads.

Darkhost1999 commented 2 years ago

Games or apps freezing is an issue. The only reason I keep discussing 44 00 00 02 sc is because it's the only thing that connects everything. There appears to be no indication that anything is wrong. Just a common quality they all share is that they all have the same PPU thread values when they freeze.

Darkhost1999 commented 2 years ago

Screenshot 2022-06-28 144114 All of these freeze on same thing not just main thread FYI.

Darkhost1999 commented 2 years ago

Well there is 1 mildly interesting thread talking about semaphores

https://user-images.githubusercontent.com/60384196/176272594-f1c44095-27c0-4b23-b134-ebb9a6018276.mp4

readywer commented 2 years ago

Screenshot 2022-06-28 144114 All of these freeze on same thing not just main thread FYI.

Because the issue likely be that a theard won't send or an information or a thread won't recieve some information which causes the other threads to wait too. The other tink that i can think that maybe can cause similar thing if a returned value incorrect, or bye some kind of overflow like if you skip track in GT5 in the licens races 5time the game will get a spu desync at a 100% rate. In my opinion the best thing to do is to search which syscall causes this so it is much easyer for the devs to fix it.

Darkhost1999 commented 2 years ago

Well everytime I search the addresses in disassembled code the only thing I get is what Gael called the generic syscall name Usleep. Which is in PPU, SPU and RSX code when searched on github.

Darkhost1999 commented 2 years ago

Close until we find specifics I guess

Darkhost1999 commented 2 years ago

If specifics are found then it'd be better to open separate tickets. For documentation: 44 00 00 02 is a syscall that's called everytime a game is open and that thread is waiting. The syscall is harmless and not the cause of any issue. The issue would be whatever is causing these threads to wait not the waiting threads themselves. Indeed the syscall is just generically syscall_usleep and nothing special.