well then, here goes.
this is 64 bit linux with gcc 4.1.2, kernel 2.6.23, glibc 2.6.1, nvidia-cg-toolkit-1.5.0
PCSX2OPTIONS="--enable-sse3 --enable-sse2 --prefix ~/bin/pcsx2" (but disabling sse2/3 didn't change anything)
problem found with svn revision 223 (the first 0.9.4 I tested), confirmed on 227 (current at the time of posting).
started pcsx2 from a fresh config (i.e. all config files removed), configured everything, hit Run->CD. The gfx window pops up, segfault a split-second later.
Quote:
|
Originally Posted by strace
[...]
open("<path-to-bios>", O_RDWR) = 22
fstat(22, {st_mode=S_IFREG|0744, st_size=1024, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaba92d000
lseek(22, 0, SEEK_SET) = 0
read(22, "\362\0+\274\376\237\4*\24\354P\260M\177\177Md\32P 2\240\322$#\5\0247#:E0E"..., 704) = 704
read(22, "1$\300< %\0\0\0\0\0\0\0\0\0\226\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0"..., 4096) = 320
close(22) = 0
munmap(0x2aaaba92d000, 4096) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
|
Quote:
|
Originally Posted by gdb
** (<unknown>:25791): WARNING **: Couldn't find pixmap file: pcsxAbout.bmp
ZeroGS: creating
ZeroGS: Got Doublebuffered Visual!
ZeroGS: glX-Version 1.3
ZeroGS: Depth 24
ZeroGS: you have Direct Rendering!
ZeroGS: Disabling MRT depth writing
ZeroGS: Creating effects
ZeroGS: Creating extra effects
ZeroGS: using accurate shaders
ZeroGS: initialization successful
---Type <return> to continue, or q <return> to quit---
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) backtrace
#0 0x0000000000000000 in ?? ()
#1 0x000000000051e4f0 in recompileNextInstruction ()
#2 0x000000000051e9ef in recRecompile ()
#3 0x0000000000523980 in Dispatcher ()
#4 0x000000000d025c5b in ?? ()
#5 0x0000000000523931 in Execute_Function ()
#6 0x0000003f8a617f50 in ?? () from /usr/lib/libgobject-2.0.so.0
#7 0x0000000000000000 in ?? ()
(gdb) q
|
Deactivated Dual Core mode, now it'll sometimes segfault (same backtrace), sometimes just hang with this (but that seems to be a different bug):
Quote:
|
Originally Posted by strace
[...]
open("<path-to-iso>.ISO.toc", O_RDONLY) = -1 ENOENT (No such file or directory)
lseek(0, 32768, SEEK_SET) = 32768
read(0, "\1CD001\1\0PLAYSTATION "..., 2048) = 2048
write(9, "CDVD isofile: Image is a DVD.", 31) = 31
write(9, "\r\n", 2) = 2
lseek(0, 32768, SEEK_SET) = 32768
read(0, "\1CD001\1\0PLAYSTATION "..., 2048) = 2048
futex(0x7f83c4, FUTEX_WAKE_OP, 1, 1, 0x7f83c0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 0}) = 1
futex(0x7f8400, FUTEX_WAIT, 0, NULLZeroGS: creating
ZeroGS: Got Doublebuffered Visual!
ZeroGS: glX-Version 1.3
ZeroGS: Depth 24
ZeroGS: you have Direct Rendering!
ZeroGS: Disabling MRT depth writing
ZeroGS: Creating effects
ZeroGS: Creating extra effects
ZeroGS: using accurate shaders
ZeroGS: initialization successful
) = 0
futex(0x7f8400, FUTEX_WAIT, 0, NULL <unfinished ...>
|
I tried to narrow down the problem, changing the following things did
not help, it still segfaulted when jumping to 0 in recompileNextInstruction():
- different BIOS versions
- a different game
- setting sound plugin to SP2null
- changing the DVD plugin
- fiddling with the options in zeroGL (there's only one plugin on linux, so I couldn't change it)
- fiddling with the frame limiter
- disabling DC & MTGS
- disabling VU recompilers
When I disabled the EE Recompiler, it started working (who would have guessed?). I reset everything to my previous values with EE Rec disabled, still worked (but slooow).
so yeah, both my tests and the backtrace blame the EE Recompiler. I tried looking at the source (x68/ix86-64/iR5900-64.c) to find the problem, but that's way over my head.
0.9.3 never worked for me when using the recompiler either, but 0.9.3 wasn't supposed to run on 64 bit anyway, so I didn't bother investigating back then.
Of course the problem might just be my system or my system's stupid user, but I'm unable to find the cause either way.
Any useful piece of information I failed to provide?