oClassVar:New() results in DYNAMIC-NEW could not find class

Posted by Simon L. Prinsloo on 30-Aug-2017 09:43

I have a strange situation when running a program on the 11.7 WebClient on Windows 10 Creator's Edition. The same code runs fine on the full client.

The code has a variable, oImplementationClass, of type Progress.Lang.Class with a valid object in it.

When it reach the following line, it gives an error:

oService = oImplementationClass:New().

The error reads:

DYNAMIC-NEW could not find class PÞªqþ. (14284)

I tracked this to a specific implementation class. Each time I restart the session, the gibberish changes and sometimes it is even blank, but it seems to remain the same during a given session.

Recompilation does not help.

Did anybody see this before or have any idea what I can do? 

 Regards

Simon

All Replies

Posted by Peter Judge on 30-Aug-2017 09:52

Make sure that the .CLS and/or .P don’t have non-codepage-compliant characters (quotes and em-dashes can be problems, even in comments).
 
The Unix iconv command can help if you do. https://linux.die.net/man/1/iconv 
 

Posted by Alex Herbstritt on 30-Aug-2017 10:00

There are two possibilities here.

There is a known issue with running the Creator's update. It includes an upgrade to .NET (4.7) that can cause r-code incompatibility problems. If your hierarchy includes .NET you could be seeing an issue with our lookup of the constructor.

The other issue is a possible problem with DYNAMIC-NEW in WebClient 11.7. There is a bug logged with this but there was no reproducible case. It appears that you might have a reproducible case here.

If you are not using .NET in your hierarchies, then go ahead and log a bug so we can use your case to track it down.

Posted by Simon L. Prinsloo on 31-Aug-2017 02:01

@Alex

I logged case 00414225 with steps to reproduce from our test/demo site.

I took the command line in the log and simply replaced the prowc.exe with prowin.exe and the application launches successfully.

Posted by Garry Hall on 13-Sep-2017 10:05

Alex and I have been looking into this issue since it was reported to TS. It looks like a corner case specific to webclient when the -D is almost exceeded. The AVM will flush out unused directory entries rather than increase the -D space, and these entries are incorrectly marked as not in use. We are investigating a fix. As a workaround, you might try increasing your -D parameter. This might be an iterative process, using -hardlimit to determine the minimum -D required to start the application, then possibly doubling it.

Posted by Simon L. Prinsloo on 13-Sep-2017 12:42

Ok, I played a bit with it and found interesting results.

If I set it < 100, the failure happens sooner.

When I set it to 100, it happens at the exact same time.

When I set it to 101, the application starts just fine.

According to the startup parameter guide its default should be 1000 on 11.7, but the above makes me think that WebClient is still using 100, like in 11.6?

In prior versions I used to set it to 500 (then the supposed maximum) but since this is 11.7 I left if off.

I will manually set it to 1000 and see if it works.

Posted by Garry Hall on 13-Sep-2017 13:24

I had not kept up with the changes to -D. Indeed, it was increased to 1000 in 11.7.0, up from 100 in 11.6.X. There are some implementation details here that are rather complicated to discuss. If you were using -D 500 in the past, continue to use that in 11.7.

This thread is closed