0
votes

I have an application written using PowerBuilder version 7.0.3 Build 1009.

I built the executables with many DLLs. The application seems run fine on Windows 7 (with MS SQL Server 2005 and ODBC 06.01.7601), but sometimes it throws an application error, and then the application closes immediately.

This happens around 2 to 3 times a day, and this happens only on notebook computers. On desktop computers, it runs fine without an error. The application is to runs several crosstab reports.

Does anyone have any idea why this would happen? Please help me since the PowerBuilder version is rather old but we cannot migrate to updated version due to budget issues.

3
You did not provided any details on the error: I suppose it displays some information on the kind of problem. Maybe it is caused by 'something' that is available on the desktop but not on the laptop (ole component, dll, whatever). BTW is the OS exactly the same on both hosts? In short "it does not work" is not enough information to help you...Seki

3 Answers

1
votes

You might get the program working by trial and error but to do any troubleshooting you need to be able to produce the problem at will. For example, run Report X with certain parameters. However, there are a few things you can look at.

  • PB7 needs C:\ writable by the user. The DataWindow writes temporary files there when it needs to store large amounts of data. I've had apps crash when c:\ wasn't writable.
  • Make sure the exact same PB runtime files are on the laptop as the build machine. Make sure there's only one copy in one place in the path.
  • Make sure the laptop has plenty of free disk space. As mendioned above, PB uses disk space to buffer large amounts of DataWindow data.
  • Does the laptop have at least as much RAM as the workstation that's working?
  • Look in the system event log for any errors related to the app crashing.
  • Connect the Visual Studio debugger to your app. When it crashes you'll probably be looking at machine code in some PB DLL but the call stack may give you a clue what the app was trying to do.
  • Run Process Monitor (most useful if you're able to make the app crash). Filter to your EXE and see what's failing when it crashes.
  • It sounds like you're doing a machine code build. You could try building PBDs to see if that solves the problem. Machine code is a lot fussier and provides no significant advantage for most apps.
0
votes

As much as I'd like to affirm the "brilliant" choice to upgrade OSes without budget to upgrade apps (I love pointy-haired bosses), the real answer is that you're not likely to find an answer as easily as this.

Firstly, since Sybase wouldn't even support Windows 7 until after PB11 (IIRC, more than a year after Win7's release), it's reasonable to assume that there were problems with Win7 and even PB 10 and 10.5, let alone 7. And, no, there's never been a list of Win7-specific issues; issues are all together in bug lists with each patch. We know that at least some PB7 features will fail under Win7; whether this includes features that your app used is impossible to tell. (Side note: developing with a tool that was built before the OS was released is a losing game; I bet VB6 apps are facing the same type of issues under Win7.)

Secondly, the problem might not be PB; it might be your code. Knowing the features and flaws in a pair of OSes, it's more than feasible to write an app that works in one OS and fails in the next (virus writers do something like that all the time). It's not uncommon to do this inadvertently.

So, aside from there not being enough information (to have any chance, we'd need to know what the app is doing when it crashes), even then it may be impossible to tell if the problem is your foundation, or what's built on top of it.

Good luck,

Terry

0
votes

Hugh's post mentions most of what I'd suggest - but as the question isn't answered yet, I'll assume the problem is still occuring.

First, I'd check the version of windows 7 that you're running (64bit or 32bit). If it's 64 bit that could be the issue (particularly if the desktops are 32bit and the laptops are 64bit).

Not that this really solves the issue of running an old version of pb on a new machine, but I imported the pbvm70.dll file from the old machine and replaced the file on the new machine and everything is working as I would expect it to.

If you wanted to experiment, you could try putting the old dlls in the compiled application's location and see if that'll clear up the issue.

I ran the PB application on a Windows 7 32-bit machine.

As an alternative, I installed PB 7 using the following instructions (and didn't need to copy any dlls):

Sybase PowerBuilder 7.0.3 32-bit\Disk 1\SETUP.EXE Click "Run program" on the Program Compatibiliy Assistant window. Enter the 16-digit product key Click Next Click Next on the Welcome window. Click Yes on the Software License Agreement window. Enter the User's Name and Company Name on the User Information window then click Next. Click Next on the Choose Destination Location window. Click Next on the Choose Destination Location for Shared Files window. "Un-select the following options on the Select Components window. Un-select Infomaker 7.0 Un-select PowerJ 3.0 Un-select AppModeler 6.1.2 Un-select PowerSite 7.0 Un-select PowerDynamo 3.0 Un-select Jaguar CTS 3.0 Un-select Application integrator 3.0 Un-select Online Books Un-select SurfSide Video Application The only components that should be selected are PowerBuilder 7.0 Adaptive Server Anywhere 6.0.1" Click Next on the Select Components window Click Next on the Choose Destination Location window for Adaptive Server Anywhere 6.0.1 "Un-select the following options on the Select Components window for Adaptive Server Anywhere 6.0.1 Un-select Sybase Central Un-select jConnect" Click Next on the Select Components window for Adaptive Server Anywhere 6.0.1 Click Next on the Select Program Folder window for Adaptive Server Anywhere 6.0.1 Click Next on the Choose Destination Location window for PowerBuilder 7.0 Enterprise Click Next on the Start Copying Files window for Adaptive Server Anywhere 6.0.1 Enter the User's Name and Company Name on the Server License window for Adaptive Server Anywhere 6.0.1 Un-select "Yes, I want to view the read Me file" on the Setup Complete window then click Finish. Click Next on the Choose Destination Location window for PowerBuilder 7.0 Enterprise Click Next on the Choose Destination Location for Shared Files window for PowerBuilder 7.0 Enterprise Select "Typical" on the Setup Type window then click Next. Click Next on the Select Program Folder window for PowerBuilder 7.0 Enterprise Click Next on the Start Copying Files window for PowerBuilder 7.0 Enterprise Un-select "Yes, I want to view the read Me file" on the Setup Complete window then click Finish. Un-select both the "Yes, I want to view the read Me file" and the "Yes, I want to Launch Browser for Online Registration" on the Setup Complete window then click Finish.

HTH