Project

General

Profile

Actions

Emulator Issues #2331

closed

Unloading a plugin when its config dialog was opened causes a hang.

Added by sl1nk3.s over 14 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
Category:
UI
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

What steps will reproduce the problem?

  1. Open a Config dialog such as the wiimote config dialog
  2. Start any game/elf/wad on Windows
  3. Press Stop button... Dolphin is now stuck in some wx deletion stuff

What is the expected output? What do you see instead?
The expected behavior is the DLL unloading correctly.
Instead, it hangs if a Config dialog was created and it gets stuck in
wxEntryCleanup() (Plugin_Wiimote/main.cpp : line 121)

Please use labels and text to provide additional information.
One way to work around this issue is to manually call delete on the
plugin's wx config dialog, instead of letting wx do it itself through the
usual Destroy() method, this however is not recommended as per Wx wiki and
might cause issues.

We're already using this hacky workaround on both DSP config dialogs, and
the OGL config dialog, but the pad plugin and wiimote dialogs still use the
correct Destroy() method (also manually deleting the wiimote dialog crashes
due to the use of some tooltip windows)

Obviously, something is wrong with the way we use wx in our dlls, i still
haven't figured out a way to fix it, but creating a new wxApp for each
plugin as we currently do (at least on windows) looks suspicious.
Also can anyone this happens on Linux ?


Related issues 1 (0 open1 closed)

Blocks Emulator - Emulator Issues #2043: Release bug trackerFixednakeee

Actions
Actions #1

Updated by sl1nk3.s over 14 years ago

ah, the last sentence got Gibberished, Can anyone reproduce this on Linux ?

Actions #2

Updated by Anonymous over 14 years ago

probably won't be able to reproduce on non windows...all that nasty code to bind wxw is
ifdef'd for windows only.

Actions #3

Updated by glennricster over 14 years ago

I can confirm this behavior in linux also. If you start a game, open a plugin
configuration dialog, and press stop, then the game segmentation faults.

Actions #4

Updated by nakeee over 14 years ago

I can't press stop on linux when the gc config is open.
and when I close it and stop it works just fine.
What am I doing wrong?:)

Actions #5

Updated by glennricster over 14 years ago

Nakee. You are correct. I stated my way of reproducing this error incorrectly. It
should have been "start a game, open a plugin
configuration dialog, and stop the emulator by clicking the window manager X, then
the game segmentation faults." The way I have it set up that shuts down the emulator
by calling the same callback that the Stop button uses.

Actions #6

Updated by Sonicadvance1 over 14 years ago

Why not disable the close button? OSX can't reproduce due to it being turned off

Actions #7

Updated by sl1nk3.s over 14 years ago

  • Status changed from New to Fixed

The hang on stop on windows is fixed in r5109

Actions

Also available in: Atom PDF