Emulator Issues #12716
closedError when running simple Hello World program with printf call
0%
Description
What's the problem? Describe what went wrong.
When compiling a simple Hello World program that contains a printf
call with devkitPro/devkitPPC, and executing the resulting ELF/DOL in Dolphin by using -b -e
, it reports an error:
#include <stdio.h>
int main(int argc, char **argv) {
printf("Hello, world!\n");
}
IntCPU: Unknown instruction 00000000 at PC = 80001800 last_PC = 00000000 LR = 80007208
It looks like the error is reported after the print call was intercepted and completed:
59:21:014 Core/HLE/HLE_OS.cpp:85 N[OSREPORT]: 800057cc->800057c0| Hello, world!
What steps will reproduce the problem?
Run a program with a printf
call, see example above.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Yes, in 5.0-15377.
Is the issue present in the latest stable version?
No, 5.0 works.
If the issue isn't present in the latest stable version, which is the first broken version?
5.0-10956, i.e. https://github.com/dolphin-emu/dolphin/pull/8370 broke it.
What are your PC specifications? (CPU, GPU, Operating System, more)
- OS: macOS 10.15.7
- CPU: 2.9 GHz 6-Core Intel Core i9
- GPUs: Intel UHD Graphics 630, Radeon Pro 560X
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
Files
Updated by JosJuice about 3 years ago
- Milestone set to Current
- Regression changed from No to Yes
- Regression start set to 5.0-10956
I get this instead:
Invalid read from 0x00000000, PC = 0x80011650
Then after a few subsequent panic alerts (invalid reads from 0x2, 0x4, 0x6, 0x8, 0xa), it successfully exits to the Wii Menu.
Updated by phire about 3 years ago
- Status changed from New to Accepted
Can confirm that it crashes on my machine. I got the same Unknown instruction 00000000 at PC = 80001800 last_PC = 00000000 LR = 80007208
What's really weird is that it works fine (for me, at least) under dual-core, which shouldn't even effect things because nothing is happening on the GPU (though I guess libogc might be initialising it?)
Updated by JosJuice about 3 years ago
I get the Unknown instruction behavior after disabling cheats.
Updated by phire about 3 years ago
Oh, right.
I disabled cheats at the exact same time I disabled dual core and just assumed it was disabling dual core that fixed it.
Dual core has no effect. With cheats enabled, I get no crashing or panic alerts. Though it doesn't exit either.
Updated by sepalani about 3 years ago
What do these executables do on a real Wii? I didn't know you could use printf without initialising the screen first.
Updated by turbolent about 3 years ago
sepalani wrote:
What do these executables do on a real Wii? I didn't know you could use printf without initialising the screen first.
The printf call itself is relying on Dolphin's printf-hooking (https://github.com/dolphin-emu/dolphin/blob/a80fcf38ae51d5a1da76c878f89a5bd073de1c72/Source/Core/Core/HLE/HLE.cpp#L47).
I don't think such a program would run on real hardware, but I do not have a real Wii to test at the moment.
I do understand that supporting such a debugging feature is maybe out-of-scope, but I just wanted to point out that it used to work fine and then broke through a fix (I don't fully understand the PR).
Updated by pokechu22 about 3 years ago
Does the same error happen in a program without printf? Something as trivial as this:
int main(int argc, char **argv) { }
I'm pretty sure that such a program would immediately return to its loader (the homebrew channel usually) on console, so if the same problem happens with that then the behavior of printf without setting up libogc's console is unrelated.
Updated by JosJuice about 3 years ago
- Status changed from Accepted to Fixed
- Fixed in set to 5.0-15419