PxPlus User Forum

Main Board => Discussions => Language => Topic started by: bbssupport on May 06, 2021, 08:32:28 PM

Title: Error 49 in call program
Post by: bbssupport on May 06, 2021, 08:32:28 PM
Hi All,

Since implementing visual classes and themes across our application, we have been experiencing seemingly random error 49s in call programs. These happen a few times a day for users across our Server 2012 R2 Azure VMs running either PxPlus v16.2 or v17.0. Most commonly, the error occurs in a single program with the odd few errors occurring in other programs.

The main program in question would be executed tens of thousands of times a day as it is our 'standard program exit routine'.

The line of code in question that reports the error is 0110 IF TCB(12)>1 THEN EXIT.

The error details are:
Error Number        : 49
Error Description   : <*> Internal program format error <*>
Error Line          : 110
Programming Level   : 6
Program Path        : OUT             

We use SET_PARAM 'PC'=100 so i'm thinking it is related to the program cache somehow.

I'm unable to forcably replicate the error which is frustrating!

We recently had another issue where records read from data files were being corrupted in memory due to pending file writes to encrypted data files. PxPlus advise they have fixed this in the next release (due this month).

I'm thinking that the program cache is getting corrupted as well.

Has any one else experienced a similar problem to the one above? I'm starting to worry there may be other memory management issues that I haven't come across yet....

Title: Re: Error 49 in call program
Post by: bbssupport on May 16, 2021, 11:10:48 PM
For those of you playing at home - the issue seems to be resolved for the program in question by saving it as an ASCII program rather than a compiled program file.
Title: Re: Error 49 in call program
Post by: Mike King on May 17, 2021, 10:09:40 AM
Are you using the external PxPlus external cache manager (pxpcache) by any chance?  Perhaps it is having an error. 
Also, as you mention program Cache might be an issue although we haven't had any reports of that being a problem elsewhere. 

Saving and running the program from text ascii should make no difference (other than speed). 

Mind you I have seen that a pure dumb bad-luck case where the compiled psuedo code used by the program just happened to match one of the patterns that an anti-virus software was looking for.  As a result the anti-virus software refused to properly load the program until it ran an invasive analysis of the code which it couldn't because it wasn't actually machine code.

Although you do seem to have resolved the problem, I might suggest that you try going back to a compiled version of the code and telling your anti-virus not to check the directory(s) where you have your PxPlus application programs.  This might solve the problem for you.

Lastly, another possibility might be your cached programs are getting damaged.  We have seen applications that call external DLLs pass invalid values that can cause memory corruption.  For example passing a DLL a string that it will update while not allocating enough space in the string thus causing the DLL to overwrite memory.  We have also seen applications pass literals which are updated by the DLL -- effectively overwriting application code where the literals reside.  Switching to an ASCII program could mask these errors and may explain what you are seeing.
Title: Re: Error 49 in call program
Post by: bbssupport on May 17, 2021, 09:18:30 PM
Hi Mike,

Thanks for the reply.

We aren't using the external cache manager, only the system parameter 'PC'=100.

I doubt it is our Anti-Virus as it only appears to affect our Azure infrastructure and not other customers that use the same managed AV (Webroot).

I also don't beleive i'm calling any DLL's - especially not from the program in question.

Perhaps we just need to chalk this one up to computers being computers....