From: "Tim Lewis" <tim.lewis@insyde.com>
To: <devel@edk2.groups.io>
Subject: EmulatorPkg does not unload DLL after exit
Date: Wed, 21 Aug 2019 14:13:45 -0700 [thread overview]
Message-ID: <0ba301d55865$53151750$f93f45f0$@insyde.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 2452 bytes --]
When running a shell app twice, I ran into an interesting problem: global variables that had initializers were not initialized to the defaults specified in the source. Running the same shell app under the old NT32 seems to work. It turns out that the shell app was not being reloaded, but rather being relaunched. I deduced this from the following behavior:
1. The value of the global variables was the same as the last known value from the previous invocation.
2. The following line in WinHost.c was returning the exact same value for the DLL being loaded
Library = LoadLibraryEx (DllFileName, NULL, DONT_RESOLVE_DLL_REFERENCES); (around line 901)
3. The corresponding code in Nt32’s PeCoffExtractionLib had the following lines in PeCoffLoaderUnloadImageExtraAction
VOID *ModHandle;
ASSERT (ImageContext != NULL);
ModHandle = RemoveModeHandle (ImageContext);
if (ModHandle != NULL) {
mWinNt->FreeLibrary (ModHandle);
}
However, the same function in EmulatorPkg’s WinHost.c has:
ASSERT (ImageContext != NULL);
So it appears that the DLL is never being unloaded and the subsequent invocation of the shell app uses the same instance of the DLL, leaving the global variables with the previous values. There are two related functions: AddModHandle and RemoveModHandle.
Am I missing something? Or heading in the right direction?
Thanks,
Tim
From: devel@edk2.groups.io <devel@edk2.groups.io>
Sent: Saturday, August 17, 2019 6:30 PM
To: devel@edk2.groups.io
Subject: [edk2-devel] Upcoming Event: TianoCore Design Meeting - APAC/NAMO - Thu, 08/22/2019 6:30pm-7:30pm #cal-reminder
Reminder: TianoCore Design Meeting - APAC/NAMO
When: Thursday, 22 August 2019, 6:30pm to 7:30pm, (GMT-07:00) America/Los Angeles
Where:https://zoom.us/j/969264410
View Event <https://edk2.groups.io/g/devel/viewevent?eventid=470780>
Organizer: Stephano Cetola stephano.cetola@intel.com <mailto:stephano.cetola@intel.com?subject=Re:%20Event:%20TianoCore%20Design%20Meeting%20-%20APAC%2FNAMO>
Description:
Join Zoom Meeting
https://zoom.us/j/969264410
One tap mobile
+16465588656,,969264410# US (New York)
+17207072699,,969264410# US
Dial by your location
+1 646 558 8656 US (New York)
+1 720 707 2699 US
Meeting ID: 969 264 410
Find your local number: https://zoom.us/u/abOtdJckxL
[-- Attachment #2: Type: text/html, Size: 9987 bytes --]
next reply other threads:[~2019-08-21 21:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-21 21:13 Tim Lewis [this message]
2019-08-21 21:45 ` [edk2-devel] EmulatorPkg does not unload DLL after exit Andrew Fish
2019-08-21 22:08 ` Michael D Kinney
2019-08-22 0:47 ` Tim Lewis
2019-08-22 1:00 ` Michael D Kinney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='0ba301d55865$53151750$f93f45f0$@insyde.com' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox