[9.2.2] Error when XD Packaging

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

[9.2.2] Error when XD Packaging

jtuchel
Hi,

I am getting these 5 errors logged to the Transcript when dumping an XD Packaged image to Disk:

Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.

The runtime image seems to be fine, at least we haven't found any problems with it since we package on 9.2.2 and see these errors. They don't show up in 9.1, even though they use the same library.

What should I look for?

Joachim


--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/b55b482a-8d4b-47b9-a575-b312412c2bean%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

Mariano Martinez Peck-2
Hi Joacim, 

This doesn't seem to be something common (only one old case appeared in our case database). First, a few questions:

1) You said you are using the same library for 91 and 922 but, but which emsrv are you using now? same for both or the emsrv shipped with each VAST version? 

2) Is there any bitness difference between 91 and 922 (for example, was 91 32 bits and now 922 is 64?)

3) Our gut feeling is that you have a corrupted library object stored in your manger. If I were you I would debug the following
LibraryObjects class>>loadRecord:using:ifAbsent:
where loader hasErrorOccurred is true and see what library object it is

4) You may also try to shrink/compact/clone your existing manager (just to give it a try, don't delete the original one). You can do this from Tools -> System -> Clone Library. You will loose scratch editions etc so be sure not to remove the original manager. This is more a test than anything else. 

Best, 


On Mon, Aug 3, 2020 at 10:40 AM Joachim Tuchel <[hidden email]> wrote:
Hi,

I am getting these 5 errors logged to the Transcript when dumping an XD Packaged image to Disk:

Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.

The runtime image seems to be fine, at least we haven't found any problems with it since we package on 9.2.2 and see these errors. They don't show up in 9.1, even though they use the same library.

What should I look for?

Joachim


--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/b55b482a-8d4b-47b9-a575-b312412c2bean%40googlegroups.com.


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/CAOUkibGHRj3o2Yb_6xpxfAOfaDk2BVJdjWtLjh-YHrs60QGkbg%40mail.gmail.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
Hi Mariano,

thanks for checking.
I had indeed forgotten to change my emsrv.services file to use the latest emsrv of Version 9.2.2. But using the latest one didn't remove the error, unfortunately.

I've been using the library with 9.1 with 64 bits exclusively, and I am also only running 64 bit images with 9.2, but the library is much much older and has been used with 8.6 and older with 32 bits images

What's funny is that I cannot find any methods including String "Invalid array of input buffers' - neither in the active nor the passive image (Linux 64 bits). And there are no references to 172 in them. So where does this error come from? Is it generated by EMSRV?

The Clone Library job is running at the moment. So I'll be back with more news later today.

Joachim






[hidden email] schrieb am Dienstag, 4. August 2020 um 14:42:27 UTC+2:
Hi Joacim, 

This doesn't seem to be something common (only one old case appeared in our case database). First, a few questions:

1) You said you are using the same library for 91 and 922 but, but which emsrv are you using now? same for both or the emsrv shipped with each VAST version? 

2) Is there any bitness difference between 91 and 922 (for example, was 91 32 bits and now 922 is 64?)

3) Our gut feeling is that you have a corrupted library object stored in your manger. If I were you I would debug the following
LibraryObjects class>>loadRecord:using:ifAbsent:
where loader hasErrorOccurred is true and see what library object it is

4) You may also try to shrink/compact/clone your existing manager (just to give it a try, don't delete the original one). You can do this from Tools -> System -> Clone Library. You will loose scratch editions etc so be sure not to remove the original manager. This is more a test than anything else. 

Best, 


On Mon, Aug 3, 2020 at 10:40 AM Joachim Tuchel <[hidden email]> wrote:
Hi,

I am getting these 5 errors logged to the Transcript when dumping an XD Packaged image to Disk:

Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.

The runtime image seems to be fine, at least we haven't found any problems with it since we package on 9.2.2 and see these errors. They don't show up in 9.1, even though they use the same library.

What should I look for?

Joachim


--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/b55b482a-8d4b-47b9-a575-b312412c2bean%40googlegroups.com.


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/760efc27-7f9f-4177-a535-fa96b37853f5n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
In reply to this post by Mariano Martinez Peck-2
Mariano,


3) Our gut feeling is that you have a corrupted library object stored in your manger. If I were you I would debug the following
LibraryObjects class>>loadRecord:using:ifAbsent:
where loader hasErrorOccurred is true and see what library object it is


Maybe this is a stupid question: since the eroor appears when saving a packaged image in an XD image, where woud I put this breakpoint? I guess I'd set it in the active image ("Development"), right?

Joachim

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/71840e8a-f00d-4099-8381-019edfccb722n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
In reply to this post by jtuchel
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/181f58b1-6947-4efb-93e5-f4b83caeadd6n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
In reply to this post by jtuchel
another interesting thing is that I found no references to 172 although the numeric constant 172 is present in LibraryObjects class>>loadRecord:using:ifAbsent:

There ary days when things just seem stranger and stranger the longer you look at them,

Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:17:45 UTC+2:
Hi Mariano,

thanks for checking.
I had indeed forgotten to change my emsrv.services file to use the latest emsrv of Version 9.2.2. But using the latest one didn't remove the error, unfortunately.

I've been using the library with 9.1 with 64 bits exclusively, and I am also only running 64 bit images with 9.2, but the library is much much older and has been used with 8.6 and older with 32 bits images

What's funny is that I cannot find any methods including String "Invalid array of input buffers' - neither in the active nor the passive image (Linux 64 bits). And there are no references to 172 in them. So where does this error come from? Is it generated by EMSRV?

The Clone Library job is running at the moment. So I'll be back with more news later today.

Joachim






[hidden email] schrieb am Dienstag, 4. August 2020 um 14:42:27 UTC+2:
Hi Joacim, 

This doesn't seem to be something common (only one old case appeared in our case database). First, a few questions:

1) You said you are using the same library for 91 and 922 but, but which emsrv are you using now? same for both or the emsrv shipped with each VAST version? 

2) Is there any bitness difference between 91 and 922 (for example, was 91 32 bits and now 922 is 64?)

3) Our gut feeling is that you have a corrupted library object stored in your manger. If I were you I would debug the following
LibraryObjects class>>loadRecord:using:ifAbsent:
where loader hasErrorOccurred is true and see what library object it is

4) You may also try to shrink/compact/clone your existing manager (just to give it a try, don't delete the original one). You can do this from Tools -> System -> Clone Library. You will loose scratch editions etc so be sure not to remove the original manager. This is more a test than anything else. 

Best, 


On Mon, Aug 3, 2020 at 10:40 AM Joachim Tuchel <[hidden email]> wrote:
Hi,

I am getting these 5 errors logged to the Transcript when dumping an XD Packaged image to Disk:

Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.
Error: 172   An error has occurred reading an object from the library. The error message is: Internal Error: Invalid array of input buffers.

The runtime image seems to be fine, at least we haven't found any problems with it since we package on 9.2.2 and see these errors. They don't show up in 9.1, even though they use the same library.

What should I look for?

Joachim


--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/b55b482a-8d4b-47b9-a575-b312412c2bean%40googlegroups.com.


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/1e62ca64-6b19-439d-9b61-620f20d98127n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
In reply to this post by jtuchel
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/b3c032ae-35d3-47e1-8ba0-6d311edaa3d6n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
seems I spoke to soon...

The Error messages still show up in a packaging image on Linux, but not on Windows. When the "Output Image" step is about 60.70% done.

I also tried with a cloned Library and checked multiple times that the passive image properties are the same on Windows and Linux. Cross-Packaging a Headless Linux-Runtime-image on Windows works without any warnings or problems, but doing the same thing on Linux gives me these 5 Errors about invalid array of input buffers. Both on the original library as well as on the cloned one.

I am using emsrv shipped with VAST 9.2.2 on Linux to host the Library, The Linux packaging image runs on the same Linux VM as EMSRV (using access through emsrv on 127.0.0.1) while the Windows VM connects to it. So this is definitely not an EMSRV issue nor do I believe in corrupted Library contents. The Windows Image would complain otherwise, wouldn't it?

Everything is 9.2.2, 64 bits.


Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 09:48:25 UTC+2:
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/59c55754-854c-4760-b3a1-91fd5dac209en%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

Mariano Martinez Peck-2
Hi Joachim,

That's interesting. Is there any chance to reproduce this with a simple XD packaging instruction that doesn't depend on your maps/apps? That would be a huge help if we can reproduce it here. 

Thanks,


On Fri, Aug 7, 2020 at 9:39 AM Joachim Tuchel <[hidden email]> wrote:
seems I spoke to soon...

The Error messages still show up in a packaging image on Linux, but not on Windows. When the "Output Image" step is about 60.70% done.

I also tried with a cloned Library and checked multiple times that the passive image properties are the same on Windows and Linux. Cross-Packaging a Headless Linux-Runtime-image on Windows works without any warnings or problems, but doing the same thing on Linux gives me these 5 Errors about invalid array of input buffers. Both on the original library as well as on the cloned one.

I am using emsrv shipped with VAST 9.2.2 on Linux to host the Library, The Linux packaging image runs on the same Linux VM as EMSRV (using access through emsrv on 127.0.0.1) while the Windows VM connects to it. So this is definitely not an EMSRV issue nor do I believe in corrupted Library contents. The Windows Image would complain otherwise, wouldn't it?

Everything is 9.2.2, 64 bits.


Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 09:48:25 UTC+2:
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/59c55754-854c-4760-b3a1-91fd5dac209en%40googlegroups.com.


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/CAOUkibEo0YJrwLocCy%2BcyPSc%3DEDyq%3DD_1%2BVzDdF2xjw1jW%2B57A%40mail.gmail.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
Mariano,


I'll try to isolate it. Will probably take a few days...


Joachim

[hidden email] schrieb am Freitag, 7. August 2020 um 16:13:29 UTC+2:
Hi Joachim,

That's interesting. Is there any chance to reproduce this with a simple XD packaging instruction that doesn't depend on your maps/apps? That would be a huge help if we can reproduce it here. 

Thanks,


On Fri, Aug 7, 2020 at 9:39 AM Joachim Tuchel <[hidden email]> wrote:
seems I spoke to soon...

The Error messages still show up in a packaging image on Linux, but not on Windows. When the "Output Image" step is about 60.70% done.

I also tried with a cloned Library and checked multiple times that the passive image properties are the same on Windows and Linux. Cross-Packaging a Headless Linux-Runtime-image on Windows works without any warnings or problems, but doing the same thing on Linux gives me these 5 Errors about invalid array of input buffers. Both on the original library as well as on the cloned one.

I am using emsrv shipped with VAST 9.2.2 on Linux to host the Library, The Linux packaging image runs on the same Linux VM as EMSRV (using access through emsrv on 127.0.0.1) while the Windows VM connects to it. So this is definitely not an EMSRV issue nor do I believe in corrupted Library contents. The Windows Image would complain otherwise, wouldn't it?

Everything is 9.2.2, 64 bits.


Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 09:48:25 UTC+2:
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/ceb9d1c7-564a-42c1-900f-35242fed6be1n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

Bob Brodd
Hi Joachim,

I created a very simple headless GLORP/DB2 application for testing purposes and tried packaging using the following scenarios.  All tests run using 9.2.2 x64:
1) On Windows x64 using  UNIX XD image with Database - Glorp, DB2 CLI and Database - DB2 CLI  installed features.
2) On Windows x64 using  UNIX XD image with only  Database - Glorp, DB2 CLI  installed feature.
3) On Linux x64 using  UNIX XD image with Database - Glorp, DB2 CLI and Database - DB2 CLI  installed features.
4) On Linux x64 using  UNIX XD image with only  Database - Glorp, DB2 CLI  installed feature.

I did not see any of the errors you documented in the Transcript, or elsewhere, for any of the scenarios.

My test app has a single class method which creates a connection to the database and then creates and deletes a table from the Samples database:
runTest
"comment"
| login table accessor keyField |
login := Login new 
database: DB2Platform new; 
username: '<username>';
password: '<password>';
connectString: 'sample'.

accessor := DatabaseAccessor forLogin: login. accessor login.

table := DatabaseTable named: 'GlorpTest'.
keyField := table createFieldNamed: 'cust_no' type: accessor platform int4. 
table addAsPrimaryKeyField: keyField.
table createFieldNamed: 'cust_name' type: (accessor platform varChar: 255).

accessor createTable: table ifError: [:err |].
accessor dropTable: table ifError: [:err |].

accessor logout.

The prereqs for the app are GlorpVAPortCLISupport and GlorpVAPortPostLoad.  Might be interesting to see what results you get with this. Maybe use this as a starting point to develop a better example.

An additional suggestion ... if you do have some defective LibraryObjects, I don't think cloning will eliminate them.  Maybe you should try starting with a brand new manager and export your code into it to see if the problem still exists.

Regards,
Bob



On Friday, August 7, 2020 at 3:16:53 PM UTC-4 [hidden email] wrote:
Mariano,


I'll try to isolate it. Will probably take a few days...


Joachim

[hidden email] schrieb am Freitag, 7. August 2020 um 16:13:29 UTC+2:
Hi Joachim,

That's interesting. Is there any chance to reproduce this with a simple XD packaging instruction that doesn't depend on your maps/apps? That would be a huge help if we can reproduce it here. 

Thanks,


On Fri, Aug 7, 2020 at 9:39 AM Joachim Tuchel <[hidden email]> wrote:
seems I spoke to soon...

The Error messages still show up in a packaging image on Linux, but not on Windows. When the "Output Image" step is about 60.70% done.

I also tried with a cloned Library and checked multiple times that the passive image properties are the same on Windows and Linux. Cross-Packaging a Headless Linux-Runtime-image on Windows works without any warnings or problems, but doing the same thing on Linux gives me these 5 Errors about invalid array of input buffers. Both on the original library as well as on the cloned one.

I am using emsrv shipped with VAST 9.2.2 on Linux to host the Library, The Linux packaging image runs on the same Linux VM as EMSRV (using access through emsrv on 127.0.0.1) while the Windows VM connects to it. So this is definitely not an EMSRV issue nor do I believe in corrupted Library contents. The Windows Image would complain otherwise, wouldn't it?

Everything is 9.2.2, 64 bits.


Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 09:48:25 UTC+2:
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/2e1b4577-be57-4c3c-9b43-0f1de67fc106n%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

Re: [9.2.2] Error when XD Packaging

jtuchel
Hi Bob,

thanks for trying this out. This matches with what I found so far, since the problem persisted after reducing the image to only include "Database - Glorp, DB2 CLI" (see my message from August 7th).
I am not so sure about the defective Library Objects, because teh very same XD packaging process on Windows (using also 9.2.2x64 and loading the code from the very same Library) does not show these problems. I can confirm the problem persists in a cloned/reduced Library and I will try to find the time to export my stuff to a fresh Library (taken from install path of 9.2.2) and retry.

BTW: Sorry for my late reply, I was on vacation for a few days...

Joachim

Bob Brodd schrieb am Samstag, 15. August 2020 um 21:10:07 UTC+2:
Hi Joachim,

I created a very simple headless GLORP/DB2 application for testing purposes and tried packaging using the following scenarios.  All tests run using 9.2.2 x64:
1) On Windows x64 using  UNIX XD image with Database - Glorp, DB2 CLI and Database - DB2 CLI  installed features.
2) On Windows x64 using  UNIX XD image with only  Database - Glorp, DB2 CLI  installed feature.
3) On Linux x64 using  UNIX XD image with Database - Glorp, DB2 CLI and Database - DB2 CLI  installed features.
4) On Linux x64 using  UNIX XD image with only  Database - Glorp, DB2 CLI  installed feature.

I did not see any of the errors you documented in the Transcript, or elsewhere, for any of the scenarios.

My test app has a single class method which creates a connection to the database and then creates and deletes a table from the Samples database:
runTest
"comment"
| login table accessor keyField |
login := Login new 
database: DB2Platform new; 
username: '<username>';
password: '<password>';
connectString: 'sample'.

accessor := DatabaseAccessor forLogin: login. accessor login.

table := DatabaseTable named: 'GlorpTest'.
keyField := table createFieldNamed: 'cust_no' type: accessor platform int4. 
table addAsPrimaryKeyField: keyField.
table createFieldNamed: 'cust_name' type: (accessor platform varChar: 255).

accessor createTable: table ifError: [:err |].
accessor dropTable: table ifError: [:err |].

accessor logout.

The prereqs for the app are GlorpVAPortCLISupport and GlorpVAPortPostLoad.  Might be interesting to see what results you get with this. Maybe use this as a starting point to develop a better example.

An additional suggestion ... if you do have some defective LibraryObjects, I don't think cloning will eliminate them.  Maybe you should try starting with a brand new manager and export your code into it to see if the problem still exists.

Regards,
Bob



On Friday, August 7, 2020 at 3:16:53 PM UTC-4 [hidden email] wrote:
Mariano,


I'll try to isolate it. Will probably take a few days...


Joachim

[hidden email] schrieb am Freitag, 7. August 2020 um 16:13:29 UTC+2:
Hi Joachim,

That's interesting. Is there any chance to reproduce this with a simple XD packaging instruction that doesn't depend on your maps/apps? That would be a huge help if we can reproduce it here. 

Thanks,


On Fri, Aug 7, 2020 at 9:39 AM Joachim Tuchel <[hidden email]> wrote:
seems I spoke to soon...

The Error messages still show up in a packaging image on Linux, but not on Windows. When the "Output Image" step is about 60.70% done.

I also tried with a cloned Library and checked multiple times that the passive image properties are the same on Windows and Linux. Cross-Packaging a Headless Linux-Runtime-image on Windows works without any warnings or problems, but doing the same thing on Linux gives me these 5 Errors about invalid array of input buffers. Both on the original library as well as on the cloned one.

I am using emsrv shipped with VAST 9.2.2 on Linux to host the Library, The Linux packaging image runs on the same Linux VM as EMSRV (using access through emsrv on 127.0.0.1) while the Windows VM connects to it. So this is definitely not an EMSRV issue nor do I believe in corrupted Library contents. The Windows Image would complain otherwise, wouldn't it?

Everything is 9.2.2, 64 bits.


Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 09:48:25 UTC+2:
Okay, I think I found the problem....

The passive image on Windows that packaged without errors had different properties than the one in Linux.
While the Windows Image only had "Database - Glorp, DB2 CLI", the Linux one which showed the errors also had "Database - DB2 CLI" loaded. When I created a new passive Image without "Database - DB2 CLI", packaging and dumping a headless runtime image works without the errors.

How did I find out?

I put the breakpoint in the active image as Mariano suggested and saw things like this:

LibraryObjects class>>#loadRecord:using:ifAbsent:
    self=LibraryObjects
    aRecord=#EmRecord: 'some String with NUL bytes in it'
    loader=an ObjectLoader
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
    answer=nil
AbtNlsKernelApp class[UNIX](Class)>>#objectNamed:in:ifAbsent:
    self=AbtNlsKernelApp[UNIX]
    aName='$AbtNlsPoolDirectory$'
    anApp=AbtNlsKernelApp[UNIX]
    aBlock=[] in AbtNlsDbg class>>#recordNlsPoolNames:
[] in AbtNlsDbg class>>#recordNlsPoolNames:
    self=AbtNlsDbg
    anImage=an EpRomerImage
    poolNames=Set(#AbtOdbcPlatformFunctions )
    app=AbtNlsKernelApp[UNIX]
    names=nil

Which somehow told me I need to take a look at the packeged Image contents and see if I find something interesting. Which I didn't. Which to me sounds logical, since the Packaging Instructions are the same in both teh Windows and the Linux image.
So the idea was to see what else could make a difference between the two images. If I load the same Packaging Instructions and the same Config Maps on both images, there must be something different "below" my code. Since both images access the same Library on the same Linux machine and use the same EMSRV, the only differende is either in my base image(s) or some code shipped by Instantiations - that was my idea. So I took a look at the passive image properties and found the differenve mentioned above.

Now I am happily packaging my headless image on Linux (where automation works much better than on Windows and which is my testing platform anyways) without any problems.

There is just one question left for me: why do these image properties make such a difference? In my naive mind, "Database - Glorp, DB2 CLI" uses DB2 CLI functionality anyways, so "Database - DB2 CLI" should be a subset of it...? Why does it hurt to load both into a passive Image? Is this some failed double-initialization of Pools? BTW: not all 5 errors seemed to be related to Glorp. One had an empty Set of poolNames. But all 5 errors were gone when I did the change described here...


Anyways, my packaging process is okay now. The issue is solved.


Thanks Mariano for reading and helping, let me know if you need Stack Traces of the packaging or such to research this if it sounds like something worth looking into.

Joachim






Joachim Tuchel schrieb am Mittwoch, 5. August 2020 um 08:43:28 UTC+2:
what's interesting: when I do the XD Packaging in VA 9.2.2 on Windows (also 64 bits), using the very same library, The errors don't occur in the Transcript... ???




--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/va-smalltalk/a82fb9af-c72b-4d8a-9e98-6498796f6dccn%40googlegroups.com.