Pho3NiX
25th July 2005, 23:45
First thank to the doom9 crew for making sur a usefull resource site.
Well, I joined this board 5 days ago to complain about a problem with NuMenu4U, but it looked like in those 5 day the problem slowly transformed into a solution that i wish to share with you.
It my little contribution as a completely dvd n00b but still not completely n00b using his computer ;)
I hope my first post will be useful to some of you.
----------------------------------------------------------------------------
The problem:
NuMenu4u does not open correctly on some computer
When it's drawing window it came with a dividion by zero error (11)
Then two automation error (440)
Background History:
http://forum.doom9.org/showthread.php?p=575233#post575233
http://forum.doom9.org/showthread.php?p=580047#post580047
Zeul original answer:
This is a difficult one, no one has reported this. All i can think is that the ocx files haven't been registered correctly, though the error thrown should be a different one, but heh.
Try re registering the following ocx files:
C:\WINDOWS\system32\vbalCmdBar6.ocx
C:\WINDOWS\system32\vbalIml6.ocx
C:\WINDOWS\system32\vbalProgBar6.ocx
Observation:
Fix Obiviously does not work
Reinstalling VB Does not work
Problem is almost version independant: it was reported back in the 1.X version and is still in here.
in one of its changelog, Zeul got rid of those special ocx for the gui, so its no more related to those
!! THE PROGRAM WORKS IN THE OTHER COMPUTER I HAVE !!
Of course the one it didnt work on was the one with the dvd burner :(
best guest ... dll error or program incompatibility with something else installed
Path to the solution:
Well i tried alot of useless things, such as
installing it somewhere else,
trying to get an old version from p2p
killing every other process but this one .. etc.
As nothing was working i took another aproach
I had a "crakerkit" sitting on my hd for quite some times with debuger/decompiler and few asm tutorial
SO i gave it a try to find debuging VB is a real pain (espicialy when you dont have the source and visual studio)
Those are my finding ... the error happend in msvbvm6.dll
Micro Soft Visual Basic Virtual Machine 6
Well you knwo what ! that is completely useless to know
it only confirm me that it is a vb program !
and that the error happpens in a predefined vb function and not in Zeul Code
But i already knew that because of the look of the error dialog box.
-------------------
The next day I tried to solve the problem with a new attack plan
I tryed to list what dll the program was using so i can import those from the working machine to mines
and you know what ... i just find my bitch
in the last dll that was imported before the program crash was uxtheme.dll
Now those who are involved in tweaking their windows know two things
1) This is the dll responsable for the theming engine (Service) so your window can have the good winxp toys'r us blue feeling
2) M$ does not let you use non microsft (homemade) themes unless you patch this dll
So as there's like 42421418 version of this patched file hanging on the net, and i am using one of those customised non microsoft theme, i guessed this was the problem.
i took the dll from the working computer to this one ( its ok as both are SP2 )
and a few reboot later NuMenu4U Lauched properly !!!!!
The only big problem is that i'm now stuck with the window classic theme.
Good old win 2000 feeling ;)... well not really good
As i don't want to stwich dll each time i use NuMenu4U, i tryed to used another patcher for uxtheme.dll
wich unfortunately don't work. but i discovered something else:
BOTTOM LINE:
IF YOU CANNOT START NUMENU4U Because of a division by zero error (11) and you are using custom theme, just switch back to a normal microsoft signed theme
If it still does not work disable the theming service for the time of use of NuMenu4U
If it still does not work, restore a clean version of uxtheme.dll and reboot
If it still does not work, then its a completely different problem ;)
(hint: that's the kind of thing that fit well in a FAQ ;) )
(comment: some custom theme does work/other doesn't... you can still be on the safe side by using M$ ones)
So basicly a division by zero is caused by the visual theme :S ... the joy of programing
More thecnical comment to the author Zeul, or anyone with spare time and computer knowlege:
This is what happens rigth before the error
GetProcAddress(0x77F10000 [c:\windows\system32\GDI32.DLL], "LineTo") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x77F19D07.
LoadLibraryA("gdi32") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("gdi32") returned 0x77F10000.
GetProcAddress(0x77F10000 [c:\windows\system32\GDI32.DLL], "BitBlt") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x77F16DC0.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "OpenThemeData") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD77CB8.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "GetThemeInt") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD7476A.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "DrawThemeBackground") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD72C28.
LoadLibraryW("comctl32.dll") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E2B5.
LoadLibraryW("comctl32.dll") returned 0x773D0000.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_DrawIndirect") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E19A and returned 0x773E54A2.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_LoadImage") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1AC and returned 0x773E95F0.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_Destroy") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1BE and returned 0x773E5084.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "DrawShadowText") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1D0 and returned 0x7744605B.
LoadLibraryExW("C:\WINDOWS\system32\MSVBVM60.DLL", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "c:\windows\system32\USER32.DLL" at address 0x77D5E2F5.
LoadLibraryExW("C:\WINDOWS\system32\MSVBVM60.DLL", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned 0x66000000.
LoadLibraryA("oleaut32.dll") called from "c:\windows\system32\OLE32.DLL" at address 0x7750AD9D.
LoadLibraryA("oleaut32.dll") returned 0x77120000.
-----------[ Division By Zero Error Here ]------------------------------------------------
### from that point i do not beleive the rest is usefull as the normal program flow is disrupted
### But two error 440 (automation error happens in those next lines)
GetProcAddress(0x77120000 [c:\windows\system32\OLEAUT32.DLL], "SysAllocString") called from "c:\windows\system32\OLE32.DLL" at address 0x7750ADB4 and returned 0x77124BC2.
GetProcAddress(0x75E90000 [c:\windows\system32\SXS.DLL], "SxsOleAut32MapConfiguredClsidToReferenceClsid") called from "c:\windows\system32\OLEAUT32.DLL" at address 0x7712E876 and returned 0x75EB58A0.
GetProcAddress(0x75E90000 [c:\windows\system32\SXS.DLL], "SxsOleAut32RedirectTypeLibrary") called from "c:\windows\system32\OLEAUT32.DLL" at address 0x7712E876 and returned 0x75EB5DBD.
And yep that is it.
Actually as you can switch betwen themes almost instantly in winxp i did some more toying with this "bug"
I loaded the program properly in the classic theme, then switched to the problematic theme
I have still the error 11 (divide by zero) when the window redraw with the new theme, however the program does not exit
Now what is good with that is that the GUI drawed perfectly with the exception of the two progessbar in the bottom-rigth corner near
"waiting..." and "Overall Progress"
Those porgess bar now look like black slashes, that way
______________________________________________________
//////////////////////////////////////////////////////
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Now i believe it's fair to guess that those progress bar are causing the divide by zero error.
Eg while drawing them, it does something like
< % done > divided by < length of bar >
and as the bars don't get drawn, their length is zero wich explain the divide by zero
I can confirm that the rest of the program seam to work properly, even if i have not yet tested it in a real situation
There is another minor error, due to the theme, in the wizard about a combobox.
Even if the procedure is combo1_Click, it happens when the wizard gui is loaded and before i actually cliked on anything
------------------------------------------------
Procedure Name: combo1_Click
Module Name: MainForm
Error Number: -2147418105
Error Description: Erreur Automation
Error Source: ErrorHandler
Error Line: 42
Call Stack:
CheckLocation --> ReplacementFile
combo1_Click --> MainForm
sListAllDrives --> GlobalFunctions
-----------------------------------------------
Finally the error is 100% replicable
this is the theme that i found to be broken
http://www.deviantart.com/view/4591314/
Well i think this is all i can do to help without writing some vb code for you lol.
I know that the problem seam to be more of a broken theme then a broken app. However i had this theme for quite alot of time and never had any error due to it. Also i realised that i am not eh only one who had this problem so it's good that some of you will know an extra help step beside "reinstall vb"
It would be nice to Zeul if he can find another way to draw those progess bar, or at least have a registry / ini file option to force using
XX% done text instead of the progress bar.
Well, I joined this board 5 days ago to complain about a problem with NuMenu4U, but it looked like in those 5 day the problem slowly transformed into a solution that i wish to share with you.
It my little contribution as a completely dvd n00b but still not completely n00b using his computer ;)
I hope my first post will be useful to some of you.
----------------------------------------------------------------------------
The problem:
NuMenu4u does not open correctly on some computer
When it's drawing window it came with a dividion by zero error (11)
Then two automation error (440)
Background History:
http://forum.doom9.org/showthread.php?p=575233#post575233
http://forum.doom9.org/showthread.php?p=580047#post580047
Zeul original answer:
This is a difficult one, no one has reported this. All i can think is that the ocx files haven't been registered correctly, though the error thrown should be a different one, but heh.
Try re registering the following ocx files:
C:\WINDOWS\system32\vbalCmdBar6.ocx
C:\WINDOWS\system32\vbalIml6.ocx
C:\WINDOWS\system32\vbalProgBar6.ocx
Observation:
Fix Obiviously does not work
Reinstalling VB Does not work
Problem is almost version independant: it was reported back in the 1.X version and is still in here.
in one of its changelog, Zeul got rid of those special ocx for the gui, so its no more related to those
!! THE PROGRAM WORKS IN THE OTHER COMPUTER I HAVE !!
Of course the one it didnt work on was the one with the dvd burner :(
best guest ... dll error or program incompatibility with something else installed
Path to the solution:
Well i tried alot of useless things, such as
installing it somewhere else,
trying to get an old version from p2p
killing every other process but this one .. etc.
As nothing was working i took another aproach
I had a "crakerkit" sitting on my hd for quite some times with debuger/decompiler and few asm tutorial
SO i gave it a try to find debuging VB is a real pain (espicialy when you dont have the source and visual studio)
Those are my finding ... the error happend in msvbvm6.dll
Micro Soft Visual Basic Virtual Machine 6
Well you knwo what ! that is completely useless to know
it only confirm me that it is a vb program !
and that the error happpens in a predefined vb function and not in Zeul Code
But i already knew that because of the look of the error dialog box.
-------------------
The next day I tried to solve the problem with a new attack plan
I tryed to list what dll the program was using so i can import those from the working machine to mines
and you know what ... i just find my bitch
in the last dll that was imported before the program crash was uxtheme.dll
Now those who are involved in tweaking their windows know two things
1) This is the dll responsable for the theming engine (Service) so your window can have the good winxp toys'r us blue feeling
2) M$ does not let you use non microsft (homemade) themes unless you patch this dll
So as there's like 42421418 version of this patched file hanging on the net, and i am using one of those customised non microsoft theme, i guessed this was the problem.
i took the dll from the working computer to this one ( its ok as both are SP2 )
and a few reboot later NuMenu4U Lauched properly !!!!!
The only big problem is that i'm now stuck with the window classic theme.
Good old win 2000 feeling ;)... well not really good
As i don't want to stwich dll each time i use NuMenu4U, i tryed to used another patcher for uxtheme.dll
wich unfortunately don't work. but i discovered something else:
BOTTOM LINE:
IF YOU CANNOT START NUMENU4U Because of a division by zero error (11) and you are using custom theme, just switch back to a normal microsoft signed theme
If it still does not work disable the theming service for the time of use of NuMenu4U
If it still does not work, restore a clean version of uxtheme.dll and reboot
If it still does not work, then its a completely different problem ;)
(hint: that's the kind of thing that fit well in a FAQ ;) )
(comment: some custom theme does work/other doesn't... you can still be on the safe side by using M$ ones)
So basicly a division by zero is caused by the visual theme :S ... the joy of programing
More thecnical comment to the author Zeul, or anyone with spare time and computer knowlege:
This is what happens rigth before the error
GetProcAddress(0x77F10000 [c:\windows\system32\GDI32.DLL], "LineTo") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x77F19D07.
LoadLibraryA("gdi32") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("gdi32") returned 0x77F10000.
GetProcAddress(0x77F10000 [c:\windows\system32\GDI32.DLL], "BitBlt") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x77F16DC0.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "OpenThemeData") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD77CB8.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "GetThemeInt") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD7476A.
LoadLibraryA("uxtheme.dll") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0B1.
LoadLibraryA("uxtheme.dll") returned 0x5AD70000.
GetProcAddress(0x5AD70000 [c:\windows\system32\UXTHEME.DLL], "DrawThemeBackground") called from "c:\windows\system32\MSVBVM60.DLL" at address 0x6600A0D8 and returned 0x5AD72C28.
LoadLibraryW("comctl32.dll") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E2B5.
LoadLibraryW("comctl32.dll") returned 0x773D0000.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_DrawIndirect") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E19A and returned 0x773E54A2.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_LoadImage") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1AC and returned 0x773E95F0.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "ImageList_Destroy") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1BE and returned 0x773E5084.
GetProcAddress(0x773D0000 [c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL], "DrawShadowText") called from "c:\windows\system32\UXTHEME.DLL" at address 0x5AD7E1D0 and returned 0x7744605B.
LoadLibraryExW("C:\WINDOWS\system32\MSVBVM60.DLL", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "c:\windows\system32\USER32.DLL" at address 0x77D5E2F5.
LoadLibraryExW("C:\WINDOWS\system32\MSVBVM60.DLL", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned 0x66000000.
LoadLibraryA("oleaut32.dll") called from "c:\windows\system32\OLE32.DLL" at address 0x7750AD9D.
LoadLibraryA("oleaut32.dll") returned 0x77120000.
-----------[ Division By Zero Error Here ]------------------------------------------------
### from that point i do not beleive the rest is usefull as the normal program flow is disrupted
### But two error 440 (automation error happens in those next lines)
GetProcAddress(0x77120000 [c:\windows\system32\OLEAUT32.DLL], "SysAllocString") called from "c:\windows\system32\OLE32.DLL" at address 0x7750ADB4 and returned 0x77124BC2.
GetProcAddress(0x75E90000 [c:\windows\system32\SXS.DLL], "SxsOleAut32MapConfiguredClsidToReferenceClsid") called from "c:\windows\system32\OLEAUT32.DLL" at address 0x7712E876 and returned 0x75EB58A0.
GetProcAddress(0x75E90000 [c:\windows\system32\SXS.DLL], "SxsOleAut32RedirectTypeLibrary") called from "c:\windows\system32\OLEAUT32.DLL" at address 0x7712E876 and returned 0x75EB5DBD.
And yep that is it.
Actually as you can switch betwen themes almost instantly in winxp i did some more toying with this "bug"
I loaded the program properly in the classic theme, then switched to the problematic theme
I have still the error 11 (divide by zero) when the window redraw with the new theme, however the program does not exit
Now what is good with that is that the GUI drawed perfectly with the exception of the two progessbar in the bottom-rigth corner near
"waiting..." and "Overall Progress"
Those porgess bar now look like black slashes, that way
______________________________________________________
//////////////////////////////////////////////////////
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Now i believe it's fair to guess that those progress bar are causing the divide by zero error.
Eg while drawing them, it does something like
< % done > divided by < length of bar >
and as the bars don't get drawn, their length is zero wich explain the divide by zero
I can confirm that the rest of the program seam to work properly, even if i have not yet tested it in a real situation
There is another minor error, due to the theme, in the wizard about a combobox.
Even if the procedure is combo1_Click, it happens when the wizard gui is loaded and before i actually cliked on anything
------------------------------------------------
Procedure Name: combo1_Click
Module Name: MainForm
Error Number: -2147418105
Error Description: Erreur Automation
Error Source: ErrorHandler
Error Line: 42
Call Stack:
CheckLocation --> ReplacementFile
combo1_Click --> MainForm
sListAllDrives --> GlobalFunctions
-----------------------------------------------
Finally the error is 100% replicable
this is the theme that i found to be broken
http://www.deviantart.com/view/4591314/
Well i think this is all i can do to help without writing some vb code for you lol.
I know that the problem seam to be more of a broken theme then a broken app. However i had this theme for quite alot of time and never had any error due to it. Also i realised that i am not eh only one who had this problem so it's good that some of you will know an extra help step beside "reinstall vb"
It would be nice to Zeul if he can find another way to draw those progess bar, or at least have a registry / ini file option to force using
XX% done text instead of the progress bar.