=== SEGV on latest SVN ===
===================
More tests with the Linux builds. Games seem to be unable to use the memory cards. Using the memory card manager this crash comes around frequently:
Looks like somebody did not init a file handler properly ending up in an incorrect deletion.
EDIT: Decided to turn this into a general problem topic as the Linux build has a bunch of problems.
Something is wrong with the Wii emulation part. Trying to run Wii games the following error shows up:
and the emulator hangs as it tries to display an error message box but can not handle it as the message loop is not invoked properly (threading issue).
A Font issue which I noticed a couple of revisions back already and is still here. Not much in the crash log:
If I knew what exactly the emulator is trying to pull off I could try looking deeper for the problem.
EDIT:
Attempt of a crash log with the good old forced-SEGV trick. Still don't get what's going on especially since grep-ing the source files does not show any point of this error string being produced anywhere:
EDIT: EDIT:
Located the problematic code part. It's in the file Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp in method CEXIIPL::TransferByte(u8& _uByte):
Can't make though something out of that code without looking closer at the entire thing. But it looks like the emulator fails to decode something.
===================
More tests with the Linux builds. Games seem to be unable to use the memory cards. Using the memory card manager this crash comes around frequently:
Code:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff28b5484 in _IO_un_link () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff28b5484 in _IO_un_link () from /lib/libc.so.6
#1 0x00007ffff28a8dfd in fclose () from /lib/libc.so.6
#2 0x000000000047280c in CMemcardManager::~CMemcardManager() ()
#3 0x0000000000444d71 in CFrame::OnMemcard(wxCommandEvent&) ()
#4 0x00007ffff366ac61 in wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-2.8.so.0
#5 0x00007ffff366bde4 in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-2.8.so.0
#6 0x00007ffff366bec7 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-2.8.so.0
#7 0x00007ffff366be50 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-2.8.so.0
#8 0x00007ffff3b2d030 in ?? () from /usr/lib/libwx_gtk2u_core-2.8.so.0
#9 0x00007ffff495348d in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#10 0x00007ffff49687d2 in ?? () from /usr/lib/libgobject-2.0.so.0
#11 0x00007ffff4969d27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#12 0x00007ffff496a1f3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff6525140 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#14 0x00007ffff642a3cd in gtk_menu_shell_activate_item () from /usr/lib/libgtk-x11-2.0.so.0
#15 0x00007ffff642bd0b in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x00007ffff641c5f8 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#17 0x00007ffff495348d in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#18 0x00007ffff49684c6 in ?? () from /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff4969bc0 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff496a1f3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff651f1d6 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#22 0x00007ffff641500b in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#23 0x00007ffff64160cb in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#24 0x00007ffff608c87c in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#25 0x00007ffff4499741 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#26 0x00007ffff449ced8 in ?? () from /usr/lib/libglib-2.0.so.0
#27 0x00007ffff449d3ad in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#28 0x00007ffff64164b7 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#29 0x00007ffff3acd318 in wxEventLoop::Run() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
#30 0x00007ffff3b4671b in wxAppBase::MainLoop() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
#31 0x00007ffff3610d6d in wxEntry(int&, wchar_t**) () from /usr/lib/libwx_baseu-2.8.so.0
#32 0x0000000000494162 in main ()
EDIT: Decided to turn this into a general problem topic as the Linux build has a bunch of problems.
Something is wrong with the Wii emulation part. Trying to run Wii games the following error shows up:
Code:
13:27:088 Source/Core/Common/Src/MsgHandler.cpp:53 E[*]: Warning: SetupWiiMem: Cant find setting file
A Font issue which I noticed a couple of revisions back already and is still here. Not much in the crash log:
Code:
17:36:434 Source/Core/Common/Src/MsgHandler.cpp:53 E[*]: Warning: Error: Trying to access ANSI fonts but they are not loaded. Games may not show fonts correctly, or crash.
The program 'dolphin-emu' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadIDChoice (invalid resource ID chosen for this connection)'.
(Details: serial 35956 error_code 14 request_code 1 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
dolphin-emu: xcb_io.c:249: process_responses: Assertion `(((long) (dpy->last_request_read) - (long) (dpy->request)) <= 0)' failed.
Program received signal SIGABRT, Aborted.
EDIT:
Attempt of a crash log with the good old forced-SEGV trick. Still don't get what's going on especially since grep-ing the source files does not show any point of this error string being produced anywhere:
Code:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd25d8910 (LWP 15921)]
0x000000000058520b in MsgAlert(char const*, bool, int, char const*, ...) ()
(gdb) bt
#0 0x000000000058520b in MsgAlert(char const*, bool, int, char const*, ...) ()
#1 0x00000000004d9bd7 in CEXIIPL::TransferByte(unsigned char&) ()
#2 0x00000000004d9498 in IEXIDevice::DMARead(unsigned int, unsigned int) ()
#3 0x00000000004d9106 in CEXIChannel::Write32(unsigned int, unsigned int) ()
#4 0x0000000040500170 in ?? ()
#5 0x00000000011bb660 in ?? ()
#6 0x0000000040a0df4c in ?? ()
#7 0x00007ffff7ffe000 in ?? () from /lib64/ld-linux-x86-64.so.2
#8 0x00007ffff7ffe000 in ?? () from /lib64/ld-linux-x86-64.so.2
#9 0x00007fffd25d89d0 in ?? ()
#10 0x00007fffe1cacaf0 in ?? ()
#11 0x0000000000000001 in ?? ()
#12 0x0000000000e01640 in ?? ()
#13 0x0000000000dfe840 in ?? ()
#14 0x0000000000507ad2 in PowerPC::RunLoop() ()
#15 0x00000000004d6145 in CCPU::Run() ()
#16 0x00000000004b65a5 in Core::CpuThread(void*) ()
#17 0x00007ffff754d257 in start_thread () from /lib/libpthread.so.0
#18 0x00007ffff290f99d in clone () from /lib/libc.so.6
#19 0x0000000000000000 in ?? ()
EDIT: EDIT:
Located the problematic code part. It's in the file Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp in method CEXIIPL::TransferByte(u8& _uByte):
Code:
// --- Encrypted ROM ---
// atm we pre-decrypt the whole thing, see CEXIIPL ctor
if ((m_uAddress & 0x60000000) == 0)
{
if ((m_uAddress & 0x80000000) == 0)
{
u32 position = ((m_uAddress >> 6) & ROM_MASK) + m_uRWOffset;
// Technically we should apply descrambling here, if it's currently enabled.
_uByte = m_pIPL[position];
if ((position >= 0x001AFF00) && (position <= 0x001FF474) && !m_FontsLoaded)
{
PanicAlert("Error: Trying to access %s fonts but they are not loaded. Games may not show fonts correctly, or crash.",
(position >= 0x001FCF00)?"ANSI":"SJIS");
m_FontsLoaded = true; // Don't be a nag :p
}
}
}