hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.36k stars 2.18k forks source link

FIA World Rally Championship crashes on x64 builds #2301

Closed HelicopterP closed 10 years ago

HelicopterP commented 11 years ago

It doesn't work at all and spams the console with this error endlessly:

E[HLE]: c:\buildagent\work\acf56f986e98e7c9\core\hle\sceKernel.h:445 Kernel: Bad object handle 842080371 (32312073) 20:52:550 user_main E[HLE]: HLE\sceIo.cpp:684 sceIoLseek(842080371, 822800, 0) - ERROR: invalid file 20:52:550 user_main E[HLE]: c:\buildagent\work\acf56f986e98e7c9\core\hle\sceKernel.h:445 Kernel: Bad object handle 842080371 (32312073) 20:52:550 user_main E[HLE]: HLE\sceIo.cpp:501 sceIoRead ERROR: no file open 20:52:550 user_main I[HLE]: HLE\sceIo.cpp:541 stdout: * READ FAILED. RETRY...: DvdUmdRetryRead(0x80020323) 20:53:518 user_main E[HLE]: c:\buildagent\work\acf56f986e98e7c9\core\hle\sceKernel.h:445 Kernel: Bad object handle 842080371 (32312073) 20:53:518 user_main E[HLE]: HLE\sceIo.cpp:501 sceIoRead ERROR: no file open 20:53:518 user_main I[HLE]: HLE\sceIo.cpp:541 stdout: * READ FAILED. RETRY...: DvdUmdRetryRead(0x80020323)

Here is full log http://pastebin.com/download.php?i=c6tMBkUS

unknownbrackets commented 11 years ago

Weird. Might be a scheduling issue, it seems to not be setting a fd or something.

Did this work ever in a previous version that you know of? Or never worked?

-[Unknown]

HelicopterP commented 11 years ago

I think it never worked. I've tried a few revisions/versions and it always shows exactly the same errors. The game doesn't work in jpcsp either. The last line it shows in log is: 12644 [user_main_c] ERROR memory - read8 - Invalid memory address: 0x00000000 PC=0x08808E80

sfageas commented 11 years ago

This and F1 Grand Prix Platinum will work if you load them,then press ESC go back to menu and reload the game from the icon,repeat a couple of times until it goes ingame but it crashes on some stages(F1 also crashes on some stages)

unknownbrackets commented 11 years ago

It's possible #2307 could help this but it's also very possible it will not change anything.

-[Unknown]

sfageas commented 11 years ago

I'll give it a try Success!Goes ingame

HelicopterP commented 11 years ago

Yep, it goes ingame now. Yep, it crashes later on. I have no idea if this new issue related to this one or not, but as console still shows sceIo.cpp stuff in yellow I decided to post it here: 12:24:886 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:892 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:902 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:908 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:919 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:926 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:927 __StreamThre W[HLE]: HLE\sceIo.cpp:1430 SCE_KERNEL_ERROR_NOASYNC = sceIoPollAsync(5, 09fed21c) 12:24:936 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:942 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:952 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:958 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:969 idle0 I[HLE]: GLES\Framebuffer.cpp:641 Decimating FBO for 04154000 (128 x 0 x 1), age 6 12:24:973 __StreamThre W[HLE]: HLE\sceIo.cpp:1430 SCE_KERNEL_ERROR_NOASYNC = sceIoPollAsync(5, 09fed21c) 12:24:975 user_main I[HLE]: GLES\Framebuffer.cpp:433 Creating FBO for 04154000 : 128 x 0 x 1 12:24:976 user_main E[MM]: MemmapFunctions.cpp:58 Unknown GetPointer 0480e384 PC 089a48ec LR 089a48ec

http://pastebin.com/download.php?i=KYvZv8Xw

unknownbrackets commented 11 years ago

How does this game look now?

-[Unknown]

HelicopterP commented 11 years ago

It still crashes. The easiest way to reproduce a crash is:

  1. Sellect Single Rally
  2. Sellect Australia, then - first track.
  3. It crashes after loading.

Log is full of __StreamThre W[HLE]: HLE\sceIo.cpp:1638 SCE_KERNEL_ERROR_NOASYNC = sceIoPollAsync(5, 09fed21c)

but it crashes at something like

52:17:863 bgProc_Threa I[HLE]: HLE\sceIo.cpp:714 stdout: NuWarning - ../nu2api.wrcpsp/nu3d/psp/psp_final_obj/../nugscn.c Line 2126 : Scene file out of date. Reconvert From Direct Mem. 52:17:863 bgProc_Threa W[HLE]: C:\BuildAgent\work\acf56f986e98e7c9\Core/HLE/sceKernel.h:454 Kernel: Bad object handle 0 (00000000) 52:17:863 bgProc_Threa I[HLE]: HLE\sceIo.cpp:714 stdout: NuWarning - ../nu2api.wrcpsp/nu3d/psp/psp_final_obj/../nugscn.c Line 2126 : Scene file out of date. Reconvert From Direct Mem. 52:19:547 StreamThre I[HLE]: HLE\sceAtrac.cpp:506 1=sceAtracGetAtracID(4096) 52:19:560 StreamThre I[HLE]: HLE\sceAtrac.cpp:1174 sceAtracSetData(1, 08ca2a2c, 00020000) 52:19:560 StreamThre W[HLE]: HLE\sceAtrac.cpp:1121 This is an atrac3+ stereo audio 52:19:573 StreamThre I[HLE]: HLE\sceAtrac.cpp:1243 sceAtracSetLoopNum(1, -1) 52:19:646 idle0 I[HLE]: GLES\Framebuffer.cpp:580 Creating FBO for 04154000 : 256 x 256 x 3 52:19:647 idle0 I[HLE]: GLES\Framebuffer.cpp:580 Creating FBO for 04154000 : 128 x 128 x 1 52:19:658 idle0 E[MM]: MemmapFunctions.cpp:55 Unknown GetPointer 0480e0ac PC 0882ca98 LR 08000024 52:26:556 EmuThread.cpp:113 I[BOOT]: Done.

Full log http://pastebin.com/Bu7rRiif

unknownbrackets commented 10 years ago

Any improvement in the latest git build? Is it affected by "I/O on thread"?

-[Unknown]

HelicopterP commented 10 years ago

Theres no more __StreamThre W[HLE]: HLE\sceIo.cpp:1638 SCE_KERNEL_ERROR_NOASYNC = sceIoPollAsync(5, 09fed21c)

but the game still crashes. It's not affected by IO on thread.

dbz400 commented 10 years ago

It still show up in latest build however i didn't encounter any crash in-game after played 15 mins

00:17:177 __StreamThre W[IO]: HLE\sceIo.cpp:1760 SCE_KERNEL_ERROR_NOASYNC = sceIoWaitAsync(5, 0bfdd21c) screen00302

HelicopterP commented 10 years ago

Some tracks are fully playable, but some are not. As i've already said if you want to get a crash try this:

  1. Sellect Single Rally
  2. Sellect Australia, then - first track.
dbz400 commented 10 years ago

Alright Let me try it .

dbz400 commented 10 years ago

Humm i played for a while and looks okay (this track right?) .Would it a bad dump ?

screen00306 screen00307 screen00309 screen00308

HelicopterP commented 10 years ago

Would it a bad dump ?

I don't know, but it works on real PSP. I wish there was something like redump.org for PSP... Could you give me your ppsspp.ini ?

KingPepper commented 10 years ago

Using Windows 7 (32 Bit) & v0.9.6-411-gc7dbb69 - (UCES00005 EUR) - I can confirm there are no problems with the game crashing on the Australian SS1 track. I completed a full stage on SS1 & watched Replay, No problems to report. screen00046 screen00042 screen00040 screen00044

dbz400 commented 10 years ago

@HelicopterP , basically use all default settings .Are you using the latest build here ?

http://buildbot.orphis.net/ppsspp/index.php

HelicopterP commented 10 years ago

I finaly figured it out. I was right and my dump is fine. This game works fine on x32 builds but crashes on x64 builds.

dbz400 commented 10 years ago

Yep , you are right .I just tested a x64 build from buildbot , it did crash right away

sum2012 commented 10 years ago

Reproduce in my notebook windows 64 bit. Tried turn of fast memary,not enable JIT,Stop on error. but fail Maybe I need install visual studo in my notebook

sum2012 commented 10 years ago

First try l use visual studio Express 2012 crash trace 1

dbz400 commented 10 years ago

How about if only use Memory::GetPointer but not Memory::GetPointerUnchecked ?

sum2012 commented 10 years ago

Well done fixed.

dbz400 commented 10 years ago

Well :)

sum2012 commented 10 years ago

@HelicopterP please confirm v0.9.6-453-gda97a67 is fixed in windows 64 bit.Thanks

unknownbrackets commented 10 years ago

Okay, but does the PSP crash if a block transfer references bad addresses? I thought it did when I tested it. If I'm right, that probably means we still have a bug here.

-[Unknown]

hrydgard commented 10 years ago

Could be something weird about the end of VRAM though, what with the bizarre swizzled mirrors and stuff... If it doesn't crash, maybe we should just clamp the rectangle bottom to the end of RAM.

sum2012 commented 10 years ago

But it crash only in Windows 64 bit before

unknownbrackets commented 10 years ago

An invalid memory access is not guaranteed to crash, it could be that the memory happened to be valid on 32 bit (although it may have been corrupting something important.)

-[Unknown]

HelicopterP commented 10 years ago

@sum2012 Yep, it works now, but the console is full of E[G3D]: GLES\GLES_GPU.cpp:1552 Bottom-right corner of source of block transfer is at an invalid address:

But you guys already know that :P

sum2012 commented 10 years ago

@unknownbrackets ok