VA851 - Building IP systems via IC ....

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

VA851 - Building IP systems via IC ....

Marten Feldtmann-2
I am in the process of transfering my code from 8.5.0 to 8.5.1 and I noticed, that my network aware IC based programs do not work any more. They crash and the walkback told me, that the "essci40" library could not be loaded. (OS memory 126).

After hours of debugging I found the location: It's within SciSocketManager>>primFdSetSize and this method is called during startup (SciComWIN>>initializePlatformSciConstants).

Some strange stuffs I have found:

1.) SciComWIN>>initializePlatformSciConstants is called TWICE during startup of an IC based system (Logical error ? I think its initiated from loaded and startUp)
2.) The first time when this method is executed it is executed BEFORE PlatformLibrary is told to build its logical-to-physical mapping structures of external libraries (this is triggered by EsSystemConfiguration>ssomestartupmethods). Therefore primFdSetSize triggers to load an external library named "SOCKET_PRIMS", which is not available and therefore gives an OS error 126. Therefore all programs simple crash during startup.
3) Then I change the source code and added an aditional initialization of PlatformLibrary and the startup phase continues and after that source code point in (2) I noticed the call to initialize PlatformLibrary ( I think that code from EsSystemConfiguration).
4) Then some times later during startup SciComWIN>>initializePlatformSciConstants is called again.

Any fix?

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/jWpQFcKe6N0J.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Wayne Johnston
I am upgrading from VA 7.5.1 to VA 8.5.1 and our application run as a Windows service hits this (in standard output):
1) Primitive failed in: SciSocketManager class>>#primFdSetSize due to OS error126
Process reportError: Primitive failed in: SciSocketManager class>>#primFdSetSize due to OS error126

We don't use ICs though.  I have the 8.5.1 essci40.dll in the .exe and .icx (and start-in) directory, so I don't know why the DLL can't be found.  

Can someone confirm here that they have gotten a Windows service to work on 8.5.1?

Marten, does this very normal-looking (abbreviated) stack look like what you were seeing that made you conclude primFdSetSize was being called too soon?

Platform:
OS subsystem:  WIN32s
CLIM subsystem:  ES
CLDT subsystem:  ES
XDDB subsystem:  WIN
CFS subsystem:  WIN32s
SCI subsystem:  WIN
CPM subsystem:  ES

SciSocketManager class(Object)>>#primitiveFailed:withArgument:backUp:
SciSocketManager class(Object)>>#primitiveFailed
SciSocketManager class>>#primFdSetSize
SciComWIN class>>#initializePlatformSciConstants
SciComWIN class>>#initializePlatformConstants
SciComWIN class>>#loaded
[] in <optimized block>(EmSystemConfiguration)>>#xdImageInitialize
BlockContextTemplate(Block)>>#valueWithErrorHandler:oldHandler:onReturnDo:
BlockContextTemplate(Block)>>#when:do:exitWith:retryReturn:
BlockContextTemplate(Block)>>#when:do:
EmSystemConfiguration>>#executeStartupBlock:queueErrors:
[] in EmSystemConfiguration>>#xdImageInitialize
[] in Array(SequenceableCollection)>>#with:do:
Array(ArrayedCollection)>>#do:
Array(SequenceableCollection)>>#with:do:
EmSystemConfiguration>>#xdImageInitialize
EmSystemConfiguration>>#xdImageStartup

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/lZRGXHQ-hTEJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Marten Feldtmann-2
Yes, I would guess so - but Instantiation has a patch for this error (case 49467 - if it is the error)  - both under Windows AND Unix.

Marten

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/1N8Jx2E2PUMJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Marten Feldtmann-2
In reply to this post by Wayne Johnston
Another idea here - you noticed, that 8.5.1. brought additional entries in the ini files for external libraries (name mapping). I am not sure, what will happen if you use your old 7.5 abt.ini file without these additional sections.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/Qs7xA9suxUQJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Wayne Johnston
Marten, where can I find that patch for case 49467?

And yes I did notice that [PlatformLibrary Name Mappings] section including SOCKET_PRIMS=essci40 but adding it to my old .ini file didn't help.

Thanks!

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/3jvo_erH1HQJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Wayne Johnston
Marten, thanks for sending me your patch.  For the record, it contains EmApplicationSupport::EmSystemConfiguration version "V 8.5.1  [216] - MSK PATCHED 02".  The change was just to comment the "PlatformLibrary initializeNameMappings" out of EmSystemConfiguration>>#startUp.  But it didn't help, and I ended up determining things would not work with it.  What fixed things for me was to go back to the old (1998) version of SciSocketManager class>>#loaded, which contained the "PlatformLibrary mapLogicalName: 'SOCKET_PRIMS' toPhysicalName: self libraryName".  With this (and reviving SciComWIN::ScoSocketManager class>>#libraryName) my server came up fine.  This implies (and tracing confirmed) that the SCI DLL is being loaded before the logical-physical mappings are loaded from the .ini file (#initializeNameMappings).  

So is this an inherent bug, or a sometimes-bug since it has to do with the order of classes and apps that #xdImageInitialize starts up which could vary depending on the packaging rules, or am I doing something wrong?

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/N37NrmHF3-AJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Marten Feldtmann-2
Just to summarize here: I oversaw some stuff when sending you the patch. Therefore I send you now more code.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/V2uU-qV_OPEJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Wayne Johnston
Ah, Marten pointed out another part of the patch, and indeed with it things work!  I take it Instantiations will be fixing it in 8.5.2?  Thanks!

In CLIM>>EmSystemConfiguration>>initializeVM
initializeVM
    "Initialize the low level virtual machine and image objects.
     This must be performed on every image load before any other
     operations are performed."

    "Clear all pending finalizations from previous image invocations."
    Core registry at: 37 put: (EsQueue new: 1024).
    EsWeakList systemWeakList initialize: 1024.

    PlatformLibrary
        startUp;
        initializeNameMappings.
    PlatformFunction allSubclassesDo: [ :cl | cl unbindAll ].
    EsEntryPoint startUp.
    Processor enableAsyncMessages: true 

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/ADLwTnjKlPUJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

John O'Keefe-3
Yes, this is the code I sent to Marten. It actually has 2 fixes in it:
  1. Clear the finalization queue so stale entries in the queue aren't run when the image starts
  2. Ensure the PlatformFunction name mapping is done before any PlatformFunctions are called (since SCI calls one during startUp)
John

On Friday, August 31, 2012 10:58:14 AM UTC-4, Wayne Johnston wrote:
Ah, Marten pointed out another part of the patch, and indeed with it things work!  I take it Instantiations will be fixing it in 8.5.2?  Thanks!

In CLIM>>EmSystemConfiguration>>initializeVM
initializeVM
    "Initialize the low level virtual machine and image objects.
     This must be performed on every image load before any other
     operations are performed."

    "Clear all pending finalizations from previous image invocations."
    Core registry at: 37 put: (EsQueue new: 1024).
    EsWeakList systemWeakList initialize: 1024.

    PlatformLibrary
        startUp;
        initializeNameMappings.
    PlatformFunction allSubclassesDo: [ :cl | cl unbindAll ].
    EsEntryPoint startUp.
    Processor enableAsyncMessages: true 

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/A5eWudLD7fUJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Dennis Debro
I'm having the same error but with the ODBC.

Runtime error: Primitive failed calling 'ODBCLibraryName':SQLAllocEnv from PlatformFunction>>#callWithArguments: due to OS error126.

I've tried applying the patch below but I still get the same error. I'm also not getting a walkback log. I'm researching into this but need to get pass this OS error126.

I'm using Win7 64-bit and VASmalltalk 8.5.1 if that helps.

On Friday, August 31, 2012 4:03:41 PM UTC-4, John O'Keefe wrote:
Yes, this is the code I sent to Marten. It actually has 2 fixes in it:
  1. Clear the finalization queue so stale entries in the queue aren't run when the image starts
  2. Ensure the PlatformFunction name mapping is done before any PlatformFunctions are called (since SCI calls one during startUp)
John

On Friday, August 31, 2012 10:58:14 AM UTC-4, Wayne Johnston wrote:
Ah, Marten pointed out another part of the patch, and indeed with it things work!  I take it Instantiations will be fixing it in 8.5.2?  Thanks!

In CLIM>>EmSystemConfiguration>>initializeVM
initializeVM
    "Initialize the low level virtual machine and image objects.
     This must be performed on every image load before any other
     operations are performed."

    "Clear all pending finalizations from previous image invocations."
    Core registry at: 37 put: (EsQueue new: 1024).
    EsWeakList systemWeakList initialize: 1024.

    PlatformLibrary
        startUp;
        initializeNameMappings.
    PlatformFunction allSubclassesDo: [ :cl | cl unbindAll ].
    EsEntryPoint startUp.
    Processor enableAsyncMessages: true 

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/mEuuSDEv6w4J.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Wayne Johnston
I would suspect that this is because you don't have the lines such as 
ODBCLibraryName=odbc32
in your .ini file, in this section:
[PlatformLibrary Name Mappings]

See the migration guide - Migrating from Version 8.5 : Changed specification of ODBC dll or shared object in .INI file

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/vOCxbTP1lMoJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.
Reply | Threaded
Open this post in threaded view
|

Re: VA851 - Building IP systems via IC ....

Dennis Debro
Hi Wayne,

Arrghhh!!! I hate when I don't read the manual. Thanks Wayne, that did it.

On Tuesday, October 30, 2012 3:19:36 PM UTC-4, Wayne Johnston wrote:
I would suspect that this is because you don't have the lines such as 
ODBCLibraryName=odbc32
in your .ini file, in this section:
[PlatformLibrary Name Mappings]

See the migration guide - Migrating from Version 8.5 : Changed specification of ODBC dll or shared object in .INI file

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/va-smalltalk/-/PUU17I4z9vIJ.
To post to this group, send email to [hidden email].
To unsubscribe from this group, send email to [hidden email].
For more options, visit this group at http://groups.google.com/group/va-smalltalk?hl=en.