This bug report is meaned for https://github.com/wiiu-env/libiosuhax / https://github.com/Crementif/libiosuhax but both of these forks have the bug tracker disabled, so this seems to be the only place available to report bugs...?
Anyway, it looks like doing fopen() on core 1 while doing fwrite() on core 0 has a high chance of corrupting the heap, even when the FILE * pointer is stored at a volatile variable.
My guess is that https://github.com/Crementif/libiosuhax/blob/84978493bd0b3458d2d24670f5e8060625accaa1/source/iosuhax_devoptab.c#L44 (and maybe other structs, too) isn't thread save / the compiler over optimises access thanks to missing volatile statements inside of libiosuhax.
This bug report is meaned for https://github.com/wiiu-env/libiosuhax / https://github.com/Crementif/libiosuhax but both of these forks have the bug tracker disabled, so this seems to be the only place available to report bugs...?
Anyway, it looks like doing
fopen()on core 1 while doingfwrite()on core 0 has a high chance of corrupting the heap, even when theFILE *pointer is stored at avolatilevariable.My guess is that https://github.com/Crementif/libiosuhax/blob/84978493bd0b3458d2d24670f5e8060625accaa1/source/iosuhax_devoptab.c#L44 (and maybe other structs, too) isn't thread save / the compiler over optimises access thanks to missing
volatilestatements inside of libiosuhax.