[Bug 8062] Adobe Acrobat Pro 7 Tryout installer crashes while trying to remove printer

Wine Bugs wine-bugs at winehq.org
Sat Jun 2 07:37:04 CDT 2007


------- Additional Comments From focht at gmx.net  2007-02-06 07:37 -------

--- quote ---
Not an msi bug.
--- quote ---

ok, this statement convinced me to debug this one on windows too :-)

- full msi logging/debug verbosity enabled (msi installer policy:
"Logging"="voicewarmup", "Debug=0x3")
- MsiBreak "UninstallPrinter"

Windows MSI breaks upon this custom action in same helper dll, so this action is
executed on windows too.

--- snip windows msi log ---
MSI (s) (DC:E4) [13:05:41:859]: Executing op: ActionStart(Name=UninstallPrinter,,)
Action 13:05:41: UninstallPrinter. 
MSI (s) (DC:E4) [13:05:41:859]: Executing op:
MSI (s) (DC:E4) [13:05:41:859]: Creating MSIHANDLE (827) of type 790536 for
thread 2276
MSI (s) (DC:8C) [13:05:41:859]: Invoking remote custom action. DLL:
C:\WINDOWS\Installer\MSI191.tmp, Entrypoint: DeleteDistillerPrinter
MSI (s) (DC:04) [13:05:41:859]: Generating random cookie.
MSI (s) (DC:04) [13:05:41:875]: Created Custom Action Server with PID 2416 (0x970).
MSI (s) (DC:CC) [13:05:41:906]: Running as a service.
MSI (s) (DC:88) [13:05:41:921]: Hello, I'm your 32bit Elevated custom action server.
MSI (s) (DC:8C) [13:05:42:078]: Closing MSIHANDLE (827) of type 790536 for
thread 2276
--- snip windows msi log ---

It produces same access violation exception due to buggy custom action dll code
(see my comment #3 for explanation) - but it doesnt crash the custom action
server itself.

The installer service employs additional "security" measures to guard against
"rogue" action code.
It checks for stack corruption upon return of custom msi action call
(debugprints "Possible stack corruption. Custom action may not be declared
__stdcall." in that case).
But this measure only applies if the top level custom action was declared wrong.
It can never detect/repair any stdcall/cdecl misuse within the custom action
code itself (like in this case due to messed up return stack after

The second measure is an structured exception handler, set by MSI which catches
access violations produced by rogue custom action code.
This allows to recover without crashing the whole custom action server instance.

If adobe devs had done MsiBreak="UninstallPrinter" they would see the same crash
on their crappy code, regardless if windows or wine.

The file which contains the <censored for mild profanity> code (temporarily
extracted from installer):

temp name: msiXXXX.tmp
real name: Adobeisf.dll
size: 53.248 bytes
version resource comment: "Installer utility file"


Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

More information about the wine-bugs mailing list