If one of the ActiveX controls on your machine has registration problems, PowerBuilder can end up being unable to use any ActiveX controls.Â This manifests itself in a couple of different ways when you go to the Insert->Control->OLE... menu option and then click on the Insert Control tab.
PowerBuilder 9.x:Â You will get a system fault as follows:Â Faulting application pb90.exe, version 18.104.22.16807, faulting module msvcrt.dll, version 7.0.2600.2180, fault address 0x0000beab.
PowrBuilder 10.x:Â PowerBuilder won't crash, and in fact the list of ActiveX controls will display.Â When you drop one on the window, however, it won't behave properly.
Sybase solved case 10906461 explains what PowerBuilder does when you click on that tab.Â It's basically looping through every ActiveX control entered in the registry and loading information about them.Â The issue is that Powerbuilder does not responsd well when one of them has registration problems.Â It also doesn't give you any information about which one is causing the problem.Â If you've got several hundred ActiveX controls installed on the machine, it can be a nightmare to figure out which one is the issue.
The way I recently addressed it was by loading up both RegMon and FileMon from SysInternalsÂ and started them capturing information right before I hit the Insert Control tab.Â When PowerBuilder crashed (in the case of PB 9.0.3), I reviewed the captured logs to determine which ActiveX control it might have been trying to access when the crash occurred.Â I then exported the registry keys for that particular ActiveX and then removed those keys from the registry.Â Note that a single ActiveX can have a number of entries, so once you find a potential bad actor you need to make sure you remove all of the entries for that particular control.
I had to do that several time before I finally tracked it down to the correct ActiveX.Â Then I re-imported the exported registry entries (restoring the system to the previous state).Â Finally, I ran REGSVR32 on the misbehaving ActiveX to unregister and reregister it.