cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Bad runtime object reference (Error 21) when run through incremental build. Please help.

Former Member
0 Likes
2,046


Hi,

Let me brief about my application before ask the question. In our application, we build patch and deploy at client machine. For building patch, we have a library upatch.pbl. This library is only for patch items. whenever we work on defect any released version. We work on object and move it to upatch library.

Once done, we build upatch library using incremental build. Once build is done, we deploy this upatch.pbd at client machine. This update.pbd resides at top in library list so that changed object takes preference in the application. Now the problem is whenever we run the application, we get bad runtime object reference error and application crashes. One workaround, I know is to add reference objects in upatch library and again build the incremental build. We don't know which reference may fail during running the application. We don't get this issue in development mode (running through pbls).

We can not know which reference is failing until we thoroughtly test the whole process. I don't want to increase the size of the upatch pbls (by adding reference objects).

What is the best way to avoid this bad runtime object reference issue. We can't run the full build otherwise we would have to deploy the whole pbds at client machine.

Please help me. I am attaching the error which we get when run the applications.

Please help.

Thanks,

Vipin

469-3058208

View Entire Topic
Former Member
0 Likes

Hi Vipin;

  You can get away with a PBD build for one PBL if the objects inside are concrete (working) level components. If the classes in the PBL are ancestors to working level descendants then this WILL create an unstable build.

    The reason for this problem is when new or revised instance or shared variables are added or revised. PB then compiles a work area for these variable pools. The ancestor variable pool definition is then genetically passed done to the descendants. However, these descendants must then be recompiled in their respective PBL/PBD's. If not, there then becomes a memory mapping disconnect between the ancestor & descent.

   Once that happens, your application will become unstable. The only way around this is to do a full build/compile of all your PBL/PBD's in order to have PB sort out this variable memory mapping issue.

HTH

Regards ... Chris

Former Member
0 Likes

Chris,


What an explanation. I got it now. Thanks for the detailed reason. This problem happens only with Powerbuilder. Other desktop application like VB does not have such kind of issue.

Sybase (now SAP) should think about this problem.

Thanks once again Chris.

Former Member
0 Likes

Actually, the process you use is one we've used for years to deploy "EBFs" to our customers.  We store the update PBD in the database and have it downloaded and installed on the users machine and added to the top of the library path.  When we do another update, we update the EBF table with the updated PBD and it replaces the last one.  It's worked quite well for us.  But you do have to include descendant objects in the PBD.  Its not just instance variables, PB descendants also have pointers back to object level functions in their ancestors that are affected when you modify the ancestor.  You have to deploy the descendants or else you'll get a mismatch there as well.

Former Member
0 Likes

Hi Vipin;

   You are most welcome.

  Actually, it will now be Appeon's problem after today's announcement ....

Regards ... Chris

Former Member
0 Likes

I don't see anything being done about this. It would require a total revamp of how PBD files are created. Since there is a simple work around, there is no good reason to do anything. There are plenty of other improvements that are more important.