tobimensch / aqemu

Official AQEMU repository - a GUI for virtual machines using QEMU as the backend
https://sourceforge.net/projects/aqemu/
GNU General Public License v2.0
502 stars 88 forks source link

Nonexistent dependencies and segmentation fault #89

Open philipwilk opened 3 years ago

philipwilk commented 3 years ago

I've just built Aqemu on Kubuntu with cmake and it appears that there's an error in the dependencies and it's trying to use a dependency that does not exist, emu-system-ppcemb, that I can't find any mention of it online. This leads to Segmentation fault (core dumped), which appears to be fatal. I thought this might have been a misspelling of ppc or ppc64, but those are shown to be separate dependencies in the output in #80 and in apt if you search with them with apt search qemu-system*. Unlike the error in #72, deleting the config cannot fix the issue as this is present OOTB.

  1. This nonexistent dependency needs to be removed because it's prevent execution entirely, especially because:
  2. Personally, I think that the error message for missing dependencies should be much easier to understand; trying to use the executable will simply crash with no information, and you only get the rather unhelpful error in the console, making this much more of a bother than it needs to be.

Here's a dump of what's printed in the console after running aqemu:

AQEMU Warning [2] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!

AQEMU Warning [4] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!
Segmentation fault (core dumped)
philipwilk commented 3 years ago

I did some research and found one mention of it here, https://wiki.qemu.org/ChangeLog/3.1

The "qemu-system-ppcemb" target has been removed. "qemu-system-ppc" or "qemu-system-ppc64" should be used instead.

Meaning, those two targets were added at some point but qemu-system-ppcemb wasn't removed.

philipwilk commented 3 years ago

Recompiled after commenting out the short piece of code that tries to use qemu-system-pccemb in src/System_Info.cpp and aqemu works fine. I don't know enough to be able to solve it myself, but I can say that it is for sure this section of code. I think that the exact parts that are giving the two warnings are the two ad.System =Device.map("")

ad = Available_Devices();
    ad.System = Device_Map( "Power PC EMB 32Bit", "qemu-system-ppcemb" );
    ad.CPU_List += CPU_PPC;
    ad.Machine_List += Machine_PPC_0_10_0;
    ad.Network_Card_List += Network_Card_PPC;
    ad.Video_Card_List += QEMU_Video_Cards_v0_10_0;
    ad.Audio_Card_List = Audio_Card_PPC;
    ad.PSO_Initial_Graphic_Mode = true;
    System_Info::Emulator_QEMU_2_0[ "qemu-system-ppcemb" ] = ad;

    ad = Available_Devices();
    ad.System = Device_Map( "Power PC 64Bit", "qemu-system-ppc64" );
charbelsako commented 2 years ago

sorry to bother I did the same thing and it still gives the same error.

charbelsako commented 2 years ago

AQEMU Warning [2] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!

AQEMU Warning [4] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!

AQEMU Warning [6] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!

AQEMU Warning [8] >>>
Sender: bool Emulator::Load( const QString &path )
Message: No "qemu-system-ppcemb" element!
Segmentation fault