Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Is ther a Manifest solution?

22 views
Skip to first unread message

Hector Santos

unread,
Dec 31, 2009, 2:30:37 PM12/31/09
to
I have a 12 year old BC45 compiled 32 bit GUI utility that fails to
load on XP and 2003 with a GPF. Worked find under 95, NT, 2000 and
didn't expect anything to be different for other OSes. But it was
reported this week and looking at our support logs, there were other
reports last year on this as well. Testing it on XP and 2003
confirms this.

I think it is related to either comctl32.dll, comdlg32.dll loading,
but not sure.

I used depends and there is a non-stop first chance exception,

Attempting to follow http://blog.kalmbachnet.de/?postid=80 about
isolating DLLs, I don't think I did it right.

The DLL imports using DUMPBIN are:

Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file wcevent.exe

File Type: EXECUTABLE IMAGE

Section contains the following imports:

KERNEL32.dll
4900A0 Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 FindFirstFileA
0 GetVersionExA
0 lstrcpyW
0 CreateMutexA
0 LockResource
0 WinExec
0 GetCommandLineA
0 CloseHandle
0 GlobalFree
0 InitializeCriticalSection
0 GlobalUnlock
0 GetLastError
0 LocalLock
0 GetLocalTime
0 SetHandleCount
0 TlsFree
0 TlsAlloc
0 GetStdHandle
0 WaitForSingleObject
0 GetDateFormatA
0 MulDiv
0 LocalHandle
0 LeaveCriticalSection
0 LoadResource
0 GlobalSize
0 LocalUnlock
0 lstrcmpiA
0 OutputDebugStringA
0 GetTimeZoneInformation
0 RaiseException
0 ReadFile
0 DeleteFileA
0 GetCurrentDirectoryA
0 GetProcAddress
0 SetFilePointer
0 TlsSetValue
0 GetModuleFileNameA
0 VirtualAlloc
0 lstrcpyA
0 GetTimeFormatA
0 GetWindowsDirectoryA
0 FileTimeToSystemTime
0 VirtualQuery
0 GetDriveTypeA
0 LocalReAlloc
0 GetEnvironmentStrings
0 CreateProcessA
0 LoadLibraryA
0 GetFileAttributesA
0 GetEnvironmentVariableA
0 FindResourceA
0 FindClose
0 GetFullPathNameA
0 GlobalLock
0 ExitProcess
0 CreateFileA
0 GetCurrentProcess
0 GlobalAlloc
0 lstrlenW
0 GetCurrentThreadId
0 GetTickCount
0 GetFileType
0 TlsGetValue
0 GetLogicalDrives
0 ReleaseMutex
0 SetCurrentDirectoryA
0 UnhandledExceptionFilter
0 GetModuleHandleA
0 EnterCriticalSection
0 SizeofResource
0 SetConsoleCtrlHandler
0 FreeLibrary
0 GetProfileIntA
0 FreeResource
0 VirtualFree
0 GetStartupInfoA
0 RtlUnwind
0 WriteFile
0 GetCurrentProcessId
0 GetVersion
0 lstrlenA

GDI32.dll
4901E8 Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 TextOutA
0 ExtCreatePen
0 DeleteDC
0 CreateRectRgnIndirect
0 CreatePolyPolygonRgn
0 CreatePenIndirect
0 CreatePen
0 CreateICA
0 CreateFontIndirectA
0 CreateEllipticRgnIndirect
0 CreateDIBPatternBrush
0 CreateDiscardableBitmap
0 CreateDCA
0 CreateCompatibleDC
0 CreateCompatibleBitmap
0 CreateFontA
0 CreateBrushIndirect
0 CreateBitmapIndirect
0 RoundRect
0 CreateDIBitmap
0 SetMapMode
0 CreateBitmap
0 CopyMetaFileA
0 CreatePatternBrush
0 CombineRgn
0 BitBlt
0 CreatePalette
0 CreateRectRgn
0 CreateRoundRectRgn
0 ScaleViewportExtEx
0 CreateSolidBrush
0 CreatePolygonRgn
0 SetBkColor
0 SelectObject
0 ScaleWindowExtEx
0 StretchDIBits
0 SetWindowOrgEx
0 SetWindowExtEx
0 SetViewportOrgEx
0 SetViewportExtEx
0 SetTextColor
0 SetMetaFileBitsEx
0 DPtoLP
0 SetBkMode
0 SelectPalette
0 ExcludeClipRect
0 ExtTextOutA
0 SaveDC
0 GetDeviceCaps
0 DeleteObject
0 RestoreDC
0 Rectangle
0 RealizePalette
0 PlayMetaFile
0 PatBlt
0 GetViewportOrgEx
0 MoveToEx
0 LineTo
0 IntersectClipRect
0 OffsetWindowOrgEx
0 GetTextMetricsA
0 OffsetViewportOrgEx
0 GetTextExtentPointA
0 GetSystemPaletteEntries
0 GetStockObject
0 GetPaletteEntries
0 Polygon
0 PaintRgn
0 GetObjectA
0 ResetDCA
0 GetMetaFileBitsEx
0 GetMetaFileA
0 GetCurrentObject
0 GetMapMode
0 DeleteMetaFile
0 CreateHatchBrush

USER32.dll
49031C Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 IsWindowVisible
0 IsWindowEnabled
0 IsWindow
0 IsIconic
0 IsDialogMessageA
0 IsClipboardFormatAvailable
0 InvertRect
0 InvalidateRgn
0 InvalidateRect
0 InsertMenuA
0 GrayStringA
0 GetWindowThreadProcessId
0 GetWindowTextLengthA
0 GetWindowRect
0 GetWindowPlacement
0 GetWindowLongA
0 GetWindow
0 GetUpdateRgn
0 GetUpdateRect
0 GetSystemMetrics
0 GetSystemMenu
0 GetSysColor
0 GetSubMenu
0 GetScrollRange
0 GetScrollPos
0 GetParent
0 GetMenuStringA
0 GetMenuState
0 GetMenuItemID
0 GetMenu
0 GetLastActivePopup
0 GetKeyboardState
0 GetFocus
0 GetDlgItem
0 GetDlgCtrlID
0 GetDesktopWindow
0 GetDC
0 GetCursorPos
0 GetClipboardData
0 GetClassNameA
0 GetClassInfoA
0 GetActiveWindow
0 FrameRect
0 FillRect
0 ExitWindowsEx
0 EnumThreadWindows
0 EndPaint
0 EndDialog
0 GetClientRect
0 EnableWindow
0 EnableMenuItem
0 DrawTextA
0 DrawMenuBar
0 DrawIcon
0 DrawFocusRect
0 DispatchMessageA
0 GetKeyState
0 DialogBoxParamA
0 DestroyWindow
0 DestroyMenu
0 GetMenuItemCount
0 DestroyCursor
0 DeleteMenu
0 DefWindowProcA
0 GetNextDlgTabItem
0 CreateWindowExA
0 CreatePopupMenu
0 CreateMenu
0 CreateDialogParamA
0 CloseClipboard
0 wsprintfA
0 ClientToScreen
0 GetTabbedTextExtentA
0 CheckMenuItem
0 CharUpperA
0 CallWindowProcA
0 GetWindowDC
0 CallNextHookEx
0 BeginPaint
0 AppendMenuA
0 GetWindowTextA
0 WaitMessage
0 keybd_event
0 WindowFromPoint
0 WinHelpA
0 WaitForInputIdle
0 VkKeyScanA
0 UpdateWindow
0 IsChild
0 UnregisterClassA
0 UnhookWindowsHookEx
0 TranslateMessage
0 IsMenu
0 TranslateMDISysAccel
0 TrackPopupMenu
0 ToAscii
0 IsZoomed
0 TabbedTextOutA
0 ShowScrollBar
0 SetWindowsHookExA
0 SetWindowTextA
0 SetWindowPlacement
0 SetWindowLongA
0 SetTimer
0 SetScrollRange
0 SetScrollPos
0 SetParent
0 SetMenu
0 SetCursor
0 SetClipboardData
0 SetCapture
0 SendDlgItemMessageA
0 ScrollWindow
0 ScreenToClient
0 RemoveMenu
0 ReleaseDC
0 ReleaseCapture
0 RegisterWindowMessageA
0 RegisterClassA
0 PostThreadMessageA
0 PostQuitMessage
0 PostMessageA
0 PeekMessageA
0 OpenClipboard
0 SendMessageA
0 MoveWindow
0 ModifyMenuA
0 MessageBoxExA
0 SetFocus
0 MessageBoxA
0 MessageBeep
0 MapWindowPoints
0 MapVirtualKeyA
0 LoadMenuIndirectA
0 LoadMenuA
0 LoadIconA
0 SetWindowPos
0 LoadCursorA
0 LoadBitmapA
0 LoadAcceleratorsA
0 ShowWindow
0 KillTimer
0 TranslateAcceleratorA

ADVAPI32.dll
49055C Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 OpenProcessToken
0 LookupPrivilegeValueA
0 AdjustTokenPrivileges

SHELL32.DLL
49056C Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 FindExecutableA
0 DragQueryPoint
0 DragQueryFileA
0 DragFinish
0 DragAcceptFiles

VERSION.dll
490584 Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 VerQueryValueA
0 GetFileVersionInfoSizeA
0 GetFileVersionInfoA

COMDLG32.dll
490594 Import Address Table
0 Import Name Table
0 time date stamp
0 Index of first forwarder reference

0 GetSaveFileNameA
0 GetOpenFileNameA
0 CommDlgExtendedError
0 ChooseFontA


I have a cmd level DEPENDS, ldepends.exe and it shows:

ldepends wcevent.exe /path /v /a

Module: [wcevent.exe]
+ f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\user32.dll
- f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
- f:\windows\system32\user32.dll
+ f:\windows\system32\advapi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\rpcrt4.dll
- f:\windows\system32\advapi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\secur32.dll
- f:\windows\system32\advapi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\shell32.dll
- f:\windows\system32\advapi32.dll
- f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
+ f:\windows\system32\msvcrt.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
- f:\windows\system32\ntdll.dll
- f:\windows\system32\rpcrt4.dll
+ f:\windows\system32\shlwapi.dll
- f:\windows\system32\advapi32.dll
- f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\msvcrt.dll
- f:\windows\system32\user32.dll
- f:\windows\system32\user32.dll
+ f:\windows\system32\version.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
+ f:\windows\system32\comdlg32.dll
- f:\windows\system32\advapi32.dll
+ f:\windows\system32\comctl32.dll
- f:\windows\system32\advapi32.dll
- f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
- f:\windows\system32\user32.dll
- f:\windows\system32\gdi32.dll
- f:\windows\system32\kernel32.dll
- f:\windows\system32\ntdll.dll
- f:\windows\system32\shell32.dll
- f:\windows\system32\shlwapi.dll
- f:\windows\system32\user32.dll
------------------
Module Information
------------------
- Module: wcevent.exe
company : Santronics Software, Inc.
product : wcEvent
version : 6.1.451.5
file size : 533504
create time: 10/16/04 06:52:41
write time : 12/31/09 07:39:26

- Module: f:\windows\system32\kernel32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 989696
create time: 08/04/04 12:00:00
write time : 04/14/08 00:11:56

- Module: f:\windows\system32\ntdll.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 706048
create time: 08/04/04 12:00:00
write time : 04/14/08 00:11:24

- Module: f:\windows\system32\gdi32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5698
file size : 286720
create time: 08/04/04 12:00:00
write time : 10/23/08 12:36:14

- Module: f:\windows\system32\user32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 578560
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:08

- Module: f:\windows\system32\advapi32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 617472
create time: 08/04/04 12:00:00
write time : 04/14/08 00:11:48

- Module: f:\windows\system32\rpcrt4.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 584704
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:04

- Module: f:\windows\system32\secur32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 56320
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:05

- Module: f:\windows\system32\shell32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 6.0.2900.5512
file size : 8461312
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:05

- Module: f:\windows\system32\msvcrt.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 7.0.2600.5512
file size : 343040
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:01

- Module: f:\windows\system32\shlwapi.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 6.0.2900.5512
file size : 474112
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:05

- Module: f:\windows\system32\version.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.1.2600.5512
file size : 18944
create time: 08/04/04 12:00:00
write time : 04/14/08 00:12:08

- Module: f:\windows\system32\comdlg32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 6.0.2900.5512
file size : 276992
create time: 08/04/04 12:00:00
write time : 04/14/08 00:11:51

- Module: f:\windows\system32\comctl32.dll
company : Microsoft Corporation
product : Microsoft« Windows« Operating System
version : 5.82.2900.5512
file size : 617472
create time: 08/04/04 12:00:00
write time : 04/14/08 00:11:51


But DEPENDS, it wants to use the WinSxS files:

f:\windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.2600.5581_x-ww_dfbc4fc4\GDIPLUS.DLL
f:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\COMCTL32.DLL

The first one is pre-loaded, the 2nd is dynamically loaded.

Anyway, I am wondering is this can be resolved using some
wcevent.manifest file or set of manifest files, or there is other
solution short of pulling out the old BC45 C/C++ code and see what is
happening that XP/2003 and I assume VISTA doesn't like.

Thanks

--
HLS

Jochen Kalmbach [MVP]

unread,
Dec 31, 2009, 5:15:02 PM12/31/09
to
Hi Hector!

> I have a 12 year old BC45 compiled 32 bit GUI utility that fails to load
> on XP and 2003 with a GPF. Worked find under 95, NT, 2000 and didn't
> expect anything to be different for other OSes. But it was reported
> this week and looking at our support logs, there were other reports last
> year on this as well. Testing it on XP and 2003 confirms this.

Have you tried to set a OS-Shim?
Right-Click on the EXE and then "Properties|Compatibility" and select
"Windows 2000".

It would be helpfull if you can post the callstack of the exception...

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/

Hector Santos

unread,
Dec 31, 2009, 6:11:46 PM12/31/09
to
Jochen Kalmbach [MVP] wrote:

> Hi Hector!
>
>> I have a 12 year old BC45 compiled 32 bit GUI utility that fails to
>> load on XP and 2003 with a GPF. Worked find under 95, NT, 2000 and
>> didn't expect anything to be different for other OSes. But it was
>> reported this week and looking at our support logs, there were other
>> reports last year on this as well. Testing it on XP and 2003
>> confirms this.
>
> Have you tried to set a OS-Shim?
> Right-Click on the EXE and then "Properties|Compatibility" and select
> "Windows 2000".
>
> It would be helpfull if you can post the callstack of the exception...


I posted what I captured in DRWATSON 2003 machine below. But I think
this is related to XP/2003 loading two versions of COMCTL32.DLL, the
WinSxS version and System32\ version. I just had a beta tester
running XP SP2 (and I 'suppose' to have SP2 too) and his DEPENDS log
shows no WinSxS for comctl32.dll only for the GDI32.DLL.

For my depends, I show the 6.0 version of WinSxS for comctl32.dll and
the 5.8 version of system32\comctl32.dll.

Finally, I was able to add trace calls to the EXE during
InitInstance() event and it gpfs in its

MainWindow->Create();

call. I have to see what this old OWL Win32 library wrapper is doing
for create, but I didn't think COMCTL32.DLL deals with this.????

I also found this KB:

http://forums.techguy.org/windows-xp/738023-windows-explorer-crashes-repeatedly.html
http://support.microsoft.com/kb/884883

and downloaded

WindowsXP-KB884883-v8-x86-ENU.exe

but it tells me that I already have "SP2" and don't need it!

Thanks

Stack trace

eax=00446ce6 ebx=001201bc ecx=0012f50c edx=7c82ed54 esi=009215cc
edi=00000081
eip=009215cc esp=0012f548 ebp=0012f568 iopl=0 nv up ei pl nz
na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206

function: <nosymbols>
No prior disassembly possible
009215cc e808000000 call 009215d9
009215d1 3e9f lahf
009215d3 44 inc esp
009215d4 0054fc12 add [esp+edi*8+0x12],dl
009215d8 00598b add [ecx-0x75],bl
009215db 41 inc ecx
009215dc 04ff add al,0xff
009215de 2100 and [eax],eax
009215e0 1d00000011 sbb eax,0x11000000
FAULT ->009215cc e808000000 call 009215d9
009215d1 3e9f lahf
009215d3 44 inc esp
009215d4 0054fc12 add [esp+edi*8+0x12],dl
009215d8 00598b add [ecx-0x75],bl
009215db 41 inc ecx
009215dc 04ff add al,0xff
009215de 2100 and [eax],eax
009215e0 1d00000011 sbb eax,0x11000000
009215e5 0000 add [eax],al
009215e7 0000 add [eax],al

*----> Stack Back Trace <----*
*** WARNING: Unable to verify checksum for L:\wc5\WCEVENT.EXE
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for L:\wc5\WCEVENT.EXE -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for D:\WINDOWS\system32\USER32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for D:\WINDOWS\system32\ntdll.dll -
ChildEBP RetAddr Args to Child
WARNING: Frame IP not in any known module. Following frames may be wrong.
0012f544 00446d4d 001201bc 00000081 00000000 0x9215cc
0012f568 7739c3b7 001201bc 00000081 00000000
WCEVENT!InitWndProc$qp6HWND__uiuil+0x67
0012f594 7739c484 00446ce6 001201bc 00000081 USER32!EnableMenuItem+0x4cd4
0012f60c 7739ca68 00000000 00446ce6 001201bc USER32!EnableMenuItem+0x4da1
0012f668 773948bf 005f2e00 00000081 00000000
USER32!TranslateMessageEx+0xd5
0012f698 7c82ec9e 0012f6b0 00000070 0012fb00
USER32!EnumDisplayMonitors+0xc5
0012f9bc 77394a07 80000008 0012fa40 0012fa54
ntdll!KiUserCallbackDispatcher+0x2e
0012fa68 7738e988 80000008 00474337 0012fa54 USER32!SetWindowLongW+0xd3
0012faa4 0044a829 00000008 00474337 009215e8 USER32!CreateWindowExA+0x33
0012fae0 0044a8d6 0012fc54 00000000 00000000
WCEVENT!InitWndProc$qp6HWND__uiuil+0x3b43
0012fb40 0041ea68 0012fc54 0012fbd8 0012fb9c
WCEVENT!InitWndProc$qp6HWND__uiuil+0x3bf0
0012fb50 004319c7 0012fc54 00000000 00000002
WCEVENT!_GetExceptDLLinfo+0xe9fa
0012fb9c 00431eaa 0012fbd8 00000000 00400000
WCEVENT!PropdlgKbdProc$qiuil+0x293b
0012ff44 0045dd92 00000001 00920008 00000000
WCEVENT!PropdlgKbdProc$qiuil+0x2e1e
0012ff88 0046c5f1 00400000 00000000 0014205f
WCEVENT!StdDlgProc$qp6HWND__uiuil+0xd5e3
0012ffb8 00000000 0047002c 77e523e5 00000000
WCEVENT!StdDlgProc$qp6HWND__uiuil+0x1be42

--
HLS

Hector Santos

unread,
Dec 31, 2009, 6:14:26 PM12/31/09
to
Jochen Kalmbach [MVP] wrote:

> Hi Hector!
>
>> I have a 12 year old BC45 compiled 32 bit GUI utility that fails to
>> load on XP and 2003 with a GPF. Worked find under 95, NT, 2000 and
>> didn't expect anything to be different for other OSes. But it was
>> reported this week and looking at our support logs, there were other
>> reports last year on this as well. Testing it on XP and 2003
>> confirms this.
>
> Have you tried to set a OS-Shim?
> Right-Click on the EXE and then "Properties|Compatibility" and select
> "Windows 2000".


Btw, yes, this was the first thing I tried.

What is this OS-Skim?


--
HLS

Hector Santos

unread,
Dec 31, 2009, 8:13:43 PM12/31/09
to
This problem was solved with XP SP3.

Apparently, for older GUI applications, it was still loading the
WinSxS 6.0 version of comctl32.dll plus the older one so there as a
conflict in the GUI win32 calls.

--

Hector Santos

unread,
Jan 1, 2010, 4:36:31 PM1/1/10
to
Jochen Kalmbach [MVP] wrote:

> Hi Hector!
>
>> I have a 12 year old BC45 compiled 32 bit GUI utility that fails to
>> load on XP and 2003 with a GPF. Worked find under 95, NT, 2000 and
>> didn't expect anything to be different for other OSes. But it was
>> reported this week and looking at our support logs, there were other
>> reports last year on this as well. Testing it on XP and 2003
>> confirms this.
>
> Have you tried to set a OS-Shim?
> Right-Click on the EXE and then "Properties|Compatibility" and select
> "Windows 2000".
>
> It would be helpfull if you can post the callstack of the exception...

First Jochen, long time no talk. How you are doing good! :)

As noted, the issue was solved via updating my development machine to
XP SP3. It probably explains the low report rate nor any follow up by
customer who I see did report it last yet.

But I have a question as to WHY it happen and if there is something I
can do in recompiling this Borland C/C++ 4.5 utility by maybe adding a
resource record of some sort?

The issue had seem to be that prior to the XP update, the OS loader
was loading two version of comctl32.dll

WINSxS\comctl32.dll 6.0.x.x version
Sytem32\comctl32.dll 5.8.x.x version

After the update, it was only loading the older 5.8 version and this
resolved the problem.

I am wondering, so that we don't have to be FORCING or MANDATING
anyone to update their OS, why can't this be resolved by the linking
information?

I ask because our main product is still compiled under VS 6.0 and all
our exe's and dll's don't have loading issueing on any version of
Windows. These are, by design, pure WIN32, and DO NOT, by design,
have no direct dependencies on .NET or VC8, VC9, etc, DLL.

So there be something in these VC60 compiled code that tells the OS to
avoid the WinSyS stuff.

Is that a correct assumption? and if so, do you think I can resolve
this for the single BC 4.5 compile utility by adding some resource record?

Thanks

--
HLS

Jochen Kalmbach [MVP]

unread,
Jan 2, 2010, 3:05:57 AM1/2/10
to
Hi Hector!

> So there be something in these VC60 compiled code that tells the OS to
> avoid the WinSyS stuff.

Normally the 6.* Version will only be loaded if the application (or any
DLL which is loaded by the EXE) will contain a manifest, like the following:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

If you do not have a manifest, then the old comctl32.dll will be loaded.

> Is that a correct assumption? and if so, do you think I can resolve this
> for the single BC 4.5 compile utility by adding some resource record?

I suggest, that you place a manifest-file in the same directory as the
EXE (name-of.exe.manifest) or embedd this manifest into your app.
This will give your App the "new" XP-Style and might resolve problems
with DLLs which has this manifest embedded.
Normaly your application should work with the new comctl32... (v6)


But normally the WinSxS stuff should prevent problems, even if you have
the old comctl32 loaded (that was the whole goal of the WinSxS stuff!)
;)

Hector Santos

unread,
Jan 2, 2010, 6:16:14 AM1/2/10
to
Hi,

What I am not following is why I don't have a problem with older VC6
C/C++ compiled GUI applications but with the Borland 4.5 C/C++ GUI
compiled application I am with XP/2003?

Obviously by updating my XP machine, "Something" was fixed, but what
exactly is the LINKER doing in VC6 that allows it to work without the
XP update, that the LINKER in BC45 is not doing that requires the XP
update?

There has to be a "Difference" in the exe image that is causing this
conflict.

Its pretty straight forward what the BC45 compiled GUI is importing:


V:\local\wc5\wcevent>ldepends wcevent.exe
Module: [wcevent.exe]
+ kernel32.dll
+ gdi32.dll
+ user32.dll
+ advapi32.dll
+ shell32.dll
+ version.dll
+ comdlg32.dll

Nothing special about it, its not depending on any .NET vc70, vc8, vc9
DLL.

I have over 40 MS VC60 compiled exes for my product, here is a simple one:

D:\wc63>ldepends wcnodew.exe
Module: [wcnodew.exe]
+ mfc42.dll
+ msvcrt.dll
+ kernel32.dll
+ user32.dll
+ advapi32.dll
+ comctl32.dll
+ wcsrv2.dll

Some old DLL dependencies. What is the VC60 linker doing that makes
WCNODEW.EXE work under XP/2003 without getting patches for them?

--
HLS

Jochen Kalmbach [MVP] wrote:

--
HLS

0 new messages