OSProcess - working on gnuplot

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

Re: OSProcess - working on gnuplot

Schwab,Wilhelm K
Dave,

It would help to knock the MVC workspace out of the offending #initialize method and re-save the packages.  In my experience, that simple change make the load hassle-free vs. the current situation.

Bill



-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of David T. Lewis
Sent: Wednesday, November 18, 2009 8:34 AM
To: [hidden email]
Subject: Re: [Pharo-project] OSProcess - working on gnuplot

On Wed, Nov 18, 2009 at 09:51:24AM +0100, Adrian Lienhard wrote:
> Hi Dave,
>
> Just to make sure I'm looking at the right code: The latest version
> (for Pharo) are in the projects OSProcess and CommandShell on
> SqueakSource.com?

Yes, these are the correct versions to use.

> MC complains about missing classes when loading; I just ignored them
> (probably they are not relevant as they seem related to the GUI).

These are the MVC user interface classes for CommandShell, and it is safe to ignore them. The tests do not required these classes.

>
> Running all tests crashes the Mac VM.

I have seen crashes on my Linux VM also (testing with an earlier Pharo image), although it was not happening yesterday when I was testing.
Presumably there is inadequate parameter checking in one or more of the OSPP primitives, and whatever is going wrong in the tests has exposed this.

>
> But even the simple test of chdir fails:
>
> (UnixProcessAccessorTestCase selector: #testChDir) debug
>
> It does not seem to invoke any Pharo-specific code. So I wonder if I
> miss something trivial. UnixOSProcessPlugin.bundle exists in my VM's
> Contents/Resources/ directory.

I do not have a Mac to test with. I would think that the fact that you have gotten the VM to crash is an indication that you have located the plugin bundle though ;) Just to double check, try doing this in a
workspace:

  OSProcess accessor osppModuleVersionString ==> '4.3.3'

The #osppModuleVersionString method will make a call to the plugin without doing much else, so that is a way to verify that you have loaded the bundle. Also, if the version is not fairly close to the latest (4.3.3) it might be an issue.

On OS X, I don't think that you have the AioPlugin or XDisplayControlPlugin available, so some of the tests will fail as a result of this. I don't have time right now, but I'll try removing these plugins from my system and see what happens. But it should be a few simple test failures, not the kind of problem you are seeing.

(As a side note, I use a Linux PC, and John and I originally got OSProcess working on Mac entirely through email with a bit of help from a couple other Mac users. Talk about a lengthy edit-compile-test-debug development cycle! But it was a good challenge and quite gratifying when we got it all working.).

Thanks,
Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
In reply to this post by David T. Lewis
Hi Dave,

OSProcess accessor osppModuleVersionString ==> '4.0.1'

I get the same result with the Mac 4.2.2beta1U VM.

Adrian

On Nov 18, 2009, at 14:33 , David T. Lewis wrote:

> On Wed, Nov 18, 2009 at 09:51:24AM +0100, Adrian Lienhard wrote:
>> Hi Dave,
>>
>> Just to make sure I'm looking at the right code: The latest version
>> (for Pharo) are in the projects OSProcess and CommandShell on
>> SqueakSource.com?
>
> Yes, these are the correct versions to use.
>
>> MC complains about missing classes when loading; I
>> just ignored them (probably they are not relevant as they seem  
>> related
>> to the GUI).
>
> These are the MVC user interface classes for CommandShell, and it is
> safe to ignore them. The tests do not required these classes.
>
>>
>> Running all tests crashes the Mac VM.
>
> I have seen crashes on my Linux VM also (testing with an earlier Pharo
> image), although it was not happening yesterday when I was testing.
> Presumably there is inadequate parameter checking in one or more of
> the OSPP primitives, and whatever is going wrong in the tests has
> exposed this.
>
>>
>> But even the simple test of chdir fails:
>>
>> (UnixProcessAccessorTestCase selector: #testChDir) debug
>>
>> It does not seem to invoke any Pharo-specific code. So I wonder if I
>> miss something trivial. UnixOSProcessPlugin.bundle exists in my VM's
>> Contents/Resources/ directory.
>
> I do not have a Mac to test with. I would think that the fact that you
> have gotten the VM to crash is an indication that you have located the
> plugin bundle though ;) Just to double check, try doing this in a
> workspace:
>
>  OSProcess accessor osppModuleVersionString ==> '4.3.3'
>
> The #osppModuleVersionString method will make a call to the plugin
> without doing much else, so that is a way to verify that you have
> loaded the bundle. Also, if the version is not fairly close to the
> latest (4.3.3) it might be an issue.
>
> On OS X, I don't think that you have the AioPlugin or  
> XDisplayControlPlugin
> available, so some of the tests will fail as a result of this. I
> don't have time right now, but I'll try removing these plugins from
> my system and see what happens. But it should be a few simple test
> failures, not the kind of problem you are seeing.
>
> (As a side note, I use a Linux PC, and John and I originally got
> OSProcess working on Mac entirely through email with a bit of
> help from a couple other Mac users. Talk about a lengthy
> edit-compile-test-debug development cycle! But it was a good
> challenge and quite gratifying when we got it all working.).
>
> Thanks,
> Dave
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
On Wed, Nov 18, 2009 at 02:56:56PM +0100, Adrian Lienhard wrote:
> Hi Dave,
>
> OSProcess accessor osppModuleVersionString ==> '4.0.1'
>
> I get the same result with the Mac 4.2.2beta1U VM.

I think that's from about November 2005, so a bit out of date. The source
is on SqueakSource OSProcessPlugin project if you want to see what has changed
since then. Nevertheless it should still be good enough to get most of the tests
to pass, so I would not worry about the version difference for now.

Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Henrik Sperre Johansen
In reply to this post by Adrian Lienhard

On Nov 18, 2009, at 9:51 24AM, Adrian Lienhard wrote:

> But even the simple test of chdir fails:
>
> (UnixProcessAccessorTestCase selector: #testChDir) debug

/tmp is a symlink to /private/tmp on OSX it seems, so it's not strange that test fails.

Cheers,
Henry
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
In reply to this post by David T. Lewis
OK, I'll stick to this VM version.

I compared to the Squeak trunk image and the very same test cases  
crash the VM. So at least the crashing problem (on Mac) is not likely  
caused by a Pharo-specific change.

Adrian

On Nov 18, 2009, at 16:18 , David T. Lewis wrote:

> On Wed, Nov 18, 2009 at 02:56:56PM +0100, Adrian Lienhard wrote:
>> Hi Dave,
>>
>> OSProcess accessor osppModuleVersionString ==> '4.0.1'
>>
>> I get the same result with the Mac 4.2.2beta1U VM.
>
> I think that's from about November 2005, so a bit out of date. The  
> source
> is on SqueakSource OSProcessPlugin project if you want to see what  
> has changed
> since then. Nevertheless it should still be good enough to get most  
> of the tests
> to pass, so I would not worry about the version difference for now.
>
> Dave
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
I attached gdb to the VM. When running UnixProcessTestCase the VM  
crashes with:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000083
0x000e7e9d in resume ()

(gdb) bt
#0  0x000e7e9d in resume ()
#1  0x4b04264b in ?? ()
Previous frame inner to this frame (gdb could not unwind past this  
frame)


Adrian

On Nov 18, 2009, at 17:19 , Adrian Lienhard wrote:

> OK, I'll stick to this VM version.
>
> I compared to the Squeak trunk image and the very same test cases
> crash the VM. So at least the crashing problem (on Mac) is not likely
> caused by a Pharo-specific change.
>
> Adrian
>
> On Nov 18, 2009, at 16:18 , David T. Lewis wrote:
>
>> On Wed, Nov 18, 2009 at 02:56:56PM +0100, Adrian Lienhard wrote:
>>> Hi Dave,
>>>
>>> OSProcess accessor osppModuleVersionString ==> '4.0.1'
>>>
>>> I get the same result with the Mac 4.2.2beta1U VM.
>>
>> I think that's from about November 2005, so a bit out of date. The
>> source
>> is on SqueakSource OSProcessPlugin project if you want to see what
>> has changed
>> since then. Nevertheless it should still be good enough to get most
>> of the tests
>> to pass, so I would not worry about the version difference for now.
>>
>> Dave
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
In reply to this post by Schwab,Wilhelm K
On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
> Dave,
>
> It would help to knock the MVC workspace out of the offending #initialize
> method and re-save the packages.  In my experience, that simple change make
> the load hassle-free vs. the current situation.

Bill,

Good idea, thanks. I'll take a look at that when I get home.

Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
In reply to this post by Adrian Lienhard
Hmmm ... I smell a thread problem. I looked a little more carefully at
the change log for OSPP on SqueakSource, and I see that I added this
for OSPP 4.0.2 in March 2006:

  VMConstruction-Plugins-OSProcessPlugin-dtl.3.mcz Dave Lewis,
  5 March 2006 6:08:38 pm
  Version 4.0.2
 
  Add pthread access primitive.
  Add pthread signal masking to ensure that forwarded signals are delivered to
  the interpreter thread. This is required for OS X.
 
  Strategy: Signal handler checks to see if it is executing in the context of
  the interpreter pthread. If yes, signal the Squeak semaphore, otherwise mask
  this pthread to prevent future delivery if this signum and resend the signal
  to the interpreter pthread.

IIRC, this update was needed to ensure that SIGCHLD signals would be
delivered to the pthread in which the interpreter is running. Prior to
that change, Mac users would get VM crashes when a child process exited
and OSPP handled the resulting SIGCHLD signal (which involves signaling
a Semaphore in the image with #signalSemaphoreWithIndex:).

So I think that you will need a more up to date OSPP plugin in order to
run the tests on OS X.

Note: A quick google check shows that Igor Stasenko solved this same
problem differently in Hydra, see:
  http://lists.squeakfoundation.org/pipermail/vm-dev/2009-September/003223.html

Dave


On Wed, Nov 18, 2009 at 05:59:30PM +0100, Adrian Lienhard wrote:

> I attached gdb to the VM. When running UnixProcessTestCase the VM  
> crashes with:
>
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x00000083
> 0x000e7e9d in resume ()
>
> (gdb) bt
> #0  0x000e7e9d in resume ()
> #1  0x4b04264b in ?? ()
> Previous frame inner to this frame (gdb could not unwind past this  
> frame)
>
>
> Adrian
>
> On Nov 18, 2009, at 17:19 , Adrian Lienhard wrote:
>
> > OK, I'll stick to this VM version.
> >
> > I compared to the Squeak trunk image and the very same test cases
> > crash the VM. So at least the crashing problem (on Mac) is not likely
> > caused by a Pharo-specific change.
> >
> > Adrian
> >
> > On Nov 18, 2009, at 16:18 , David T. Lewis wrote:
> >
> >> On Wed, Nov 18, 2009 at 02:56:56PM +0100, Adrian Lienhard wrote:
> >>> Hi Dave,
> >>>
> >>> OSProcess accessor osppModuleVersionString ==> '4.0.1'
> >>>
> >>> I get the same result with the Mac 4.2.2beta1U VM.
> >>
> >> I think that's from about November 2005, so a bit out of date. The
> >> source
> >> is on SqueakSource OSProcessPlugin project if you want to see what
> >> has changed
> >> since then. Nevertheless it should still be good enough to get most
> >> of the tests
> >> to pass, so I would not worry about the version difference for now.
> >>
> >> Dave
> >>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
In reply to this post by David T. Lewis
On Wed, Nov 18, 2009 at 05:14:04PM -0500, David T. Lewis wrote:

> On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
> > Dave,
> >
> > It would help to knock the MVC workspace out of the offending #initialize
> > method and re-save the packages.  In my experience, that simple change make
> > the load hassle-free vs. the current situation.
>
> Bill,
>
> Good idea, thanks. I'll take a look at that when I get home.

Well actually there were not any MVC references in #initialize. But
CommandShell class>>initialize opens a shell window, and that was failing
because text style 'Atlanta' no longer exists in Pharo. I fixed this,
so if you update to CommandShell-dtl.40.mcz that failure will no longer
occur. The shell window does not actually work, but at least the window
opens properly now. One bug down, ??? to go ...

Thanks,
Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
On Wed, Nov 18, 2009 at 09:44:08PM -0500, David T. Lewis wrote:

> On Wed, Nov 18, 2009 at 05:14:04PM -0500, David T. Lewis wrote:
> > On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
> > > Dave,
> > >
> > > It would help to knock the MVC workspace out of the offending #initialize
> > > method and re-save the packages.  In my experience, that simple change make
> > > the load hassle-free vs. the current situation.
> >
> > Bill,
> >
> > Good idea, thanks. I'll take a look at that when I get home.
>
> Well actually there were not any MVC references in #initialize. But
> CommandShell class>>initialize opens a shell window, and that was failing
> because text style 'Atlanta' no longer exists in Pharo. I fixed this,
> so if you update to CommandShell-dtl.40.mcz that failure will no longer
> occur. The shell window does not actually work, but at least the window
> opens properly now. One bug down, ??? to go ...

Correction, the shell window *does* seem to be working, so this is
actually looking much better now. However, the CommandShellTestCase
does not pass (hangs up part way through, lots of zombie unix processes
left unhandled).

The other unit tests are passing, with the exception of the tests in
AioEventHandlerTestCase that use sockets. This is due to changes in
the socket support in Pharo, but I am not worried about these failures
as they probably just require updates to the tests to match the
Pharo socket support.

I am testing on Linux with a VM that I built locally. For OS X, an
updated OSProcessPlugin will need to be included with the VM, otherwise
we will have VM crashes when handling external process exit.

The main concerns now are:

1) Need an updated OSProcessPlugin for the Mac VM (for both Squeak and Pharo)

2) Why does CommandShellTestCase on Pharo get hung up and leave zombies?

Note, CommandShellTestCase is a real stress test for OSProcess. It does
a lot of concurrent process handling with pipelines of OS processes
interacting with Squeak/Pharo. If this test does not pass, then I am
not confident in the overall reliability of OSProcess.

Dave
 

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
I took another try using a unix VM (3.11.3.2135 compiled from source)  
on OS X 10.5.8. It has the plugin version 4.3.3. Looks much better  
than with the Mac VM that has the outdated plugin!

409 run, 389 passes, 0 expected failures, 20 failures

- The VM does not crash anymore
- There are a couple of errors that go away if I change #useOldNetwork  
to return true

- The following tests seem to fail due to assumptions about files and  
permissions that do not hold on OS X:
ShellSyntaxTestCase>>#testExpandArgument03
ShellSyntaxTestCase>>#testExpandArgumentFrom01
UnixProcessAccessorTestCase>>#testIsExecutableForUserInGroup
UnixProcessAccessorTestCase>>#testIsReadableForUserInGroup
UnixProcessAccessorTestCase>>#testIsWritableForUserInGroup
UnixProcessAccessorTestCase>>#testChDir

- one or two tests fail sometimes, but not always. For example:
UnixProcessWin32FileLockingTestCase>>#testCooperatingProcesses04

- The following tests, which fork the VM, do not work:
PipeableOSProcessTestCase>>#testForkHeadlessSqueak
PipeableOSProcessTestCase>>#testForkHeadlessSqueak2
PipeableOSProcessTestCase>>#testForkSqueak
UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDo
UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDoThenQuit
UnixProcessTestCase>>#testClassForkSqueak
UnixProcessTestCase>>#testClassForkSqueakAndDo
UnixProcessTestCase>>#testClassForkSqueakAndDoThenQuit
UnixProcessTestCase>>#testForkHeadlessSqueakAndDo
UnixProcessTestCase>>#testForkHeadlessSqueakAndDoThenQuit
UnixProcessTestCase>>#testForkSqueak
UnixProcessTestCase>>#testForkSqueakAndDo
UnixProcessTestCase>>#testForkSqueakAndDoThenQuit
UnixProcessTestCase>>#testHeadlessChild

For example running #testHeadlessChild I get to stdout:

hello world from child process 1359

Segmentation fault

390493624 UnixProcess>forkHeadlessSqueakAndDoThenQuit:
390493524 >forkHeadlessSqueakAndDoThenQuit:
390493400 >headlessChild
390493264 UnixProcessTestCase>testHeadlessChild
390493172 TestCase>executeShould:inScopeOf:
390493080 BlockClosure>on:do:
390492988 TestCase>executeShould:inScopeOf:
390492876 TestCase>shouldnt:raise:
390491136 UnixProcessTestCase>testHeadlessChild
390491044 TestCase>performTest
390490952 TestCase>runCase


If I run #testForSqueak I get

The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.
The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.
The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.
The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.
The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.
The process has forked and you cannot use this CoreFoundation  
functionality safely. You MUST exec().
Break on  
__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
() to debug.

Segmentation fault

390953340 DisplayScreen>forceToScreen:
390953248 DisplayScreen>forceDamageToScreen:
390953124 OrderedCollection>do:
390952960 DisplayScreen>forceDamageToScreen:
390952840 WorldState>forceDamageToScreen:
390869724 WorldState>displayWorld:submorphs:
390869632 PasteUpMorph>privateOuterDisplayWorld
390869540 PasteUpMorph>displayWorld
390869448 WorldState>displayWorldSafely:
390869356 BlockClosure>on:do:
390869244 BlockClosure>ifError:
390869096 WorldState>displayWorldSafely:


 From these tests it seems that the critical parts of OSProcess are  
actually working with this configuration (modulo the forking).

Adrian

On Nov 19, 2009, at 06:03 , David T. Lewis wrote:

> On Wed, Nov 18, 2009 at 09:44:08PM -0500, David T. Lewis wrote:
>> On Wed, Nov 18, 2009 at 05:14:04PM -0500, David T. Lewis wrote:
>>> On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
>>>> Dave,
>>>>
>>>> It would help to knock the MVC workspace out of the offending  
>>>> #initialize
>>>> method and re-save the packages.  In my experience, that simple  
>>>> change make
>>>> the load hassle-free vs. the current situation.
>>>
>>> Bill,
>>>
>>> Good idea, thanks. I'll take a look at that when I get home.
>>
>> Well actually there were not any MVC references in #initialize. But
>> CommandShell class>>initialize opens a shell window, and that was  
>> failing
>> because text style 'Atlanta' no longer exists in Pharo. I fixed this,
>> so if you update to CommandShell-dtl.40.mcz that failure will no  
>> longer
>> occur. The shell window does not actually work, but at least the  
>> window
>> opens properly now. One bug down, ??? to go ...
>
> Correction, the shell window *does* seem to be working, so this is
> actually looking much better now. However, the CommandShellTestCase
> does not pass (hangs up part way through, lots of zombie unix  
> processes
> left unhandled).
>
> The other unit tests are passing, with the exception of the tests in
> AioEventHandlerTestCase that use sockets. This is due to changes in
> the socket support in Pharo, but I am not worried about these failures
> as they probably just require updates to the tests to match the
> Pharo socket support.
>
> I am testing on Linux with a VM that I built locally. For OS X, an
> updated OSProcessPlugin will need to be included with the VM,  
> otherwise
> we will have VM crashes when handling external process exit.
>
> The main concerns now are:
>
> 1) Need an updated OSProcessPlugin for the Mac VM (for both Squeak  
> and Pharo)
>
> 2) Why does CommandShellTestCase on Pharo get hung up and leave  
> zombies?
>
> Note, CommandShellTestCase is a real stress test for OSProcess. It  
> does
> a lot of concurrent process handling with pipelines of OS processes
> interacting with Squeak/Pharo. If this test does not pass, then I am
> not confident in the overall reliability of OSProcess.
>
> Dave
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
Adrian,

Thanks *very* much for the detailed feedback. I do want to ask a couple
more questions if your patience holds up.

First question:

I am getting serious failures on CommandShellTestCase that still worry
me. For example, if I evaluate this (on Linux VM with Pharo image):

  (CommandShellTestCase selector: #testEvaluateOrMakePipelinesFrom) debug

I find that the test never completes. It is stuck waiting for the various
external processes to be cleaned up, and the console output shows the zombie
processes whose exit signals have not yet been handled by the image:

  lewis@linux-6xfc:~/squeak/Pharo/pharo1.0-10495-rc1dev09.11.3> ps
    PID TTY          TIME CMD
   3877 pts/51   00:00:00 bash
   9695 pts/51   00:00:00 xterm
  10060 pts/51   00:00:45 squeakvm
  10268 pts/51   00:00:00 ls <defunct>
  10269 pts/51   00:00:00 cat <defunct>
  10271 pts/51   00:00:00 cat <defunct>
  10272 pts/51   00:00:00 wc <defunct>
  10273 pts/51   00:00:00 ps <defunct>
  10274 pts/51   00:00:00 cat <defunct>
  10275 pts/51   00:00:00 cat <defunct>
  10279 pts/51   00:00:00 ps
  lewis@linux-6xfc:~/squeak/Pharo/pharo1.0-10495-rc1dev09.11.3>

Do you see problems like this when you run CommandShellTestCase?

Second question:

Some of the failures you are getting look like things that I thought
that I had fixed in the past (but I'm not sure). The latest versions
from the SqueakSource repositories should be:

  OSProcess-dtl.53
  Tests-OSProcess-dtl.20
  CommandShell-dtl.40
  Tests-CommandShell-dtl.14

Could you please double check your versions of OSProcess, CommandShell and
the unit tests to see if they match these MC versions?

Thanks a lot, I really appreciate the help. And obviously I am going to
have to go buy a Mac one of these days so I will not have to ask all
these dumb questions ;)

Dave


On Thu, Nov 19, 2009 at 10:05:26PM +0100, Adrian Lienhard wrote:

> I took another try using a unix VM (3.11.3.2135 compiled from source)  
> on OS X 10.5.8. It has the plugin version 4.3.3. Looks much better  
> than with the Mac VM that has the outdated plugin!
>
> 409 run, 389 passes, 0 expected failures, 20 failures
>
> - The VM does not crash anymore
> - There are a couple of errors that go away if I change #useOldNetwork  
> to return true
>
> - The following tests seem to fail due to assumptions about files and  
> permissions that do not hold on OS X:
> ShellSyntaxTestCase>>#testExpandArgument03
> ShellSyntaxTestCase>>#testExpandArgumentFrom01
> UnixProcessAccessorTestCase>>#testIsExecutableForUserInGroup
> UnixProcessAccessorTestCase>>#testIsReadableForUserInGroup
> UnixProcessAccessorTestCase>>#testIsWritableForUserInGroup
> UnixProcessAccessorTestCase>>#testChDir
>
> - one or two tests fail sometimes, but not always. For example:
> UnixProcessWin32FileLockingTestCase>>#testCooperatingProcesses04
>
> - The following tests, which fork the VM, do not work:
> PipeableOSProcessTestCase>>#testForkHeadlessSqueak
> PipeableOSProcessTestCase>>#testForkHeadlessSqueak2
> PipeableOSProcessTestCase>>#testForkSqueak
> UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDo
> UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDoThenQuit
> UnixProcessTestCase>>#testClassForkSqueak
> UnixProcessTestCase>>#testClassForkSqueakAndDo
> UnixProcessTestCase>>#testClassForkSqueakAndDoThenQuit
> UnixProcessTestCase>>#testForkHeadlessSqueakAndDo
> UnixProcessTestCase>>#testForkHeadlessSqueakAndDoThenQuit
> UnixProcessTestCase>>#testForkSqueak
> UnixProcessTestCase>>#testForkSqueakAndDo
> UnixProcessTestCase>>#testForkSqueakAndDoThenQuit
> UnixProcessTestCase>>#testHeadlessChild
>
> For example running #testHeadlessChild I get to stdout:
>
> hello world from child process 1359
>
> Segmentation fault
>
> 390493624 UnixProcess>forkHeadlessSqueakAndDoThenQuit:
> 390493524 >forkHeadlessSqueakAndDoThenQuit:
> 390493400 >headlessChild
> 390493264 UnixProcessTestCase>testHeadlessChild
> 390493172 TestCase>executeShould:inScopeOf:
> 390493080 BlockClosure>on:do:
> 390492988 TestCase>executeShould:inScopeOf:
> 390492876 TestCase>shouldnt:raise:
> 390491136 UnixProcessTestCase>testHeadlessChild
> 390491044 TestCase>performTest
> 390490952 TestCase>runCase
>
>
> If I run #testForSqueak I get
>
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
> The process has forked and you cannot use this CoreFoundation  
> functionality safely. You MUST exec().
> Break on  
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
> () to debug.
>
> Segmentation fault
>
> 390953340 DisplayScreen>forceToScreen:
> 390953248 DisplayScreen>forceDamageToScreen:
> 390953124 OrderedCollection>do:
> 390952960 DisplayScreen>forceDamageToScreen:
> 390952840 WorldState>forceDamageToScreen:
> 390869724 WorldState>displayWorld:submorphs:
> 390869632 PasteUpMorph>privateOuterDisplayWorld
> 390869540 PasteUpMorph>displayWorld
> 390869448 WorldState>displayWorldSafely:
> 390869356 BlockClosure>on:do:
> 390869244 BlockClosure>ifError:
> 390869096 WorldState>displayWorldSafely:
>
>
>  From these tests it seems that the critical parts of OSProcess are  
> actually working with this configuration (modulo the forking).
>
> Adrian
>
> On Nov 19, 2009, at 06:03 , David T. Lewis wrote:
>
> > On Wed, Nov 18, 2009 at 09:44:08PM -0500, David T. Lewis wrote:
> >> On Wed, Nov 18, 2009 at 05:14:04PM -0500, David T. Lewis wrote:
> >>> On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
> >>>> Dave,
> >>>>
> >>>> It would help to knock the MVC workspace out of the offending  
> >>>> #initialize
> >>>> method and re-save the packages.  In my experience, that simple  
> >>>> change make
> >>>> the load hassle-free vs. the current situation.
> >>>
> >>> Bill,
> >>>
> >>> Good idea, thanks. I'll take a look at that when I get home.
> >>
> >> Well actually there were not any MVC references in #initialize. But
> >> CommandShell class>>initialize opens a shell window, and that was  
> >> failing
> >> because text style 'Atlanta' no longer exists in Pharo. I fixed this,
> >> so if you update to CommandShell-dtl.40.mcz that failure will no  
> >> longer
> >> occur. The shell window does not actually work, but at least the  
> >> window
> >> opens properly now. One bug down, ??? to go ...
> >
> > Correction, the shell window *does* seem to be working, so this is
> > actually looking much better now. However, the CommandShellTestCase
> > does not pass (hangs up part way through, lots of zombie unix  
> > processes
> > left unhandled).
> >
> > The other unit tests are passing, with the exception of the tests in
> > AioEventHandlerTestCase that use sockets. This is due to changes in
> > the socket support in Pharo, but I am not worried about these failures
> > as they probably just require updates to the tests to match the
> > Pharo socket support.
> >
> > I am testing on Linux with a VM that I built locally. For OS X, an
> > updated OSProcessPlugin will need to be included with the VM,  
> > otherwise
> > we will have VM crashes when handling external process exit.
> >
> > The main concerns now are:
> >
> > 1) Need an updated OSProcessPlugin for the Mac VM (for both Squeak  
> > and Pharo)
> >
> > 2) Why does CommandShellTestCase on Pharo get hung up and leave  
> > zombies?
> >
> > Note, CommandShellTestCase is a real stress test for OSProcess. It  
> > does
> > a lot of concurrent process handling with pipelines of OS processes
> > interacting with Squeak/Pharo. If this test does not pass, then I am
> > not confident in the overall reliability of OSProcess.
> >
> > Dave
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > [hidden email]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
Hi Dave,

On Nov 20, 2009, at 02:42 , David T. Lewis wrote:

[...]

> I am getting serious failures on CommandShellTestCase that still worry
> me. For example, if I evaluate this (on Linux VM with Pharo image):
>
>  (CommandShellTestCase selector: #testEvaluateOrMakePipelinesFrom)  
> debug

Indeed, CommandShellTestCase isn't that stable as I first thought.  
I've run all tests of CommandShellTestCase in the Test runner multiple  
times:

1. run: all green
2. run: error in testPipeline75 (re-running this test succeeded, so I  
don't know what the error was)
3. run: test runner hangs in testIfThenElse02 because indefinitely  
waiting on completionSemaphore in #evaluatePipelines:

restarted the VM
1. run: all green
2. run: same as 3 above
3. run: same as 3 above
4. run: error in testPipeline72
5. run: all green

I haven't seen any defunct processes, though.

[...]

> Second question:
>
> Some of the failures you are getting look like things that I thought
> that I had fixed in the past (but I'm not sure). The latest versions
> from the SqueakSource repositories should be:
>
>  OSProcess-dtl.53
>  Tests-OSProcess-dtl.20
>  CommandShell-dtl.40
>  Tests-CommandShell-dtl.14

I have the same versions except for CommandShell-dtl.39 (I updated to  
40 now).

Let me know if I can be of any more help.

Adrian

> Could you please double check your versions of OSProcess,  
> CommandShell and
> the unit tests to see if they match these MC versions?
>
> Thanks a lot, I really appreciate the help. And obviously I am going  
> to
> have to go buy a Mac one of these days so I will not have to ask all
> these dumb questions ;)
>
> Dave
>
>
> On Thu, Nov 19, 2009 at 10:05:26PM +0100, Adrian Lienhard wrote:
>> I took another try using a unix VM (3.11.3.2135 compiled from source)
>> on OS X 10.5.8. It has the plugin version 4.3.3. Looks much better
>> than with the Mac VM that has the outdated plugin!
>>
>> 409 run, 389 passes, 0 expected failures, 20 failures
>>
>> - The VM does not crash anymore
>> - There are a couple of errors that go away if I change  
>> #useOldNetwork
>> to return true
>>
>> - The following tests seem to fail due to assumptions about files and
>> permissions that do not hold on OS X:
>> ShellSyntaxTestCase>>#testExpandArgument03
>> ShellSyntaxTestCase>>#testExpandArgumentFrom01
>> UnixProcessAccessorTestCase>>#testIsExecutableForUserInGroup
>> UnixProcessAccessorTestCase>>#testIsReadableForUserInGroup
>> UnixProcessAccessorTestCase>>#testIsWritableForUserInGroup
>> UnixProcessAccessorTestCase>>#testChDir
>>
>> - one or two tests fail sometimes, but not always. For example:
>> UnixProcessWin32FileLockingTestCase>>#testCooperatingProcesses04
>>
>> - The following tests, which fork the VM, do not work:
>> PipeableOSProcessTestCase>>#testForkHeadlessSqueak
>> PipeableOSProcessTestCase>>#testForkHeadlessSqueak2
>> PipeableOSProcessTestCase>>#testForkSqueak
>> UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDo
>> UnixProcessTestCase>>#testClassForkHeadlessSqueakAndDoThenQuit
>> UnixProcessTestCase>>#testClassForkSqueak
>> UnixProcessTestCase>>#testClassForkSqueakAndDo
>> UnixProcessTestCase>>#testClassForkSqueakAndDoThenQuit
>> UnixProcessTestCase>>#testForkHeadlessSqueakAndDo
>> UnixProcessTestCase>>#testForkHeadlessSqueakAndDoThenQuit
>> UnixProcessTestCase>>#testForkSqueak
>> UnixProcessTestCase>>#testForkSqueakAndDo
>> UnixProcessTestCase>>#testForkSqueakAndDoThenQuit
>> UnixProcessTestCase>>#testHeadlessChild
>>
>> For example running #testHeadlessChild I get to stdout:
>>
>> hello world from child process 1359
>>
>> Segmentation fault
>>
>> 390493624 UnixProcess>forkHeadlessSqueakAndDoThenQuit:
>> 390493524 >forkHeadlessSqueakAndDoThenQuit:
>> 390493400 >headlessChild
>> 390493264 UnixProcessTestCase>testHeadlessChild
>> 390493172 TestCase>executeShould:inScopeOf:
>> 390493080 BlockClosure>on:do:
>> 390492988 TestCase>executeShould:inScopeOf:
>> 390492876 TestCase>shouldnt:raise:
>> 390491136 UnixProcessTestCase>testHeadlessChild
>> 390491044 TestCase>performTest
>> 390490952 TestCase>runCase
>>
>>
>> If I run #testForSqueak I get
>>
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>> The process has forked and you cannot use this CoreFoundation
>> functionality safely. You MUST exec().
>> Break on
>> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__
>> () to debug.
>>
>> Segmentation fault
>>
>> 390953340 DisplayScreen>forceToScreen:
>> 390953248 DisplayScreen>forceDamageToScreen:
>> 390953124 OrderedCollection>do:
>> 390952960 DisplayScreen>forceDamageToScreen:
>> 390952840 WorldState>forceDamageToScreen:
>> 390869724 WorldState>displayWorld:submorphs:
>> 390869632 PasteUpMorph>privateOuterDisplayWorld
>> 390869540 PasteUpMorph>displayWorld
>> 390869448 WorldState>displayWorldSafely:
>> 390869356 BlockClosure>on:do:
>> 390869244 BlockClosure>ifError:
>> 390869096 WorldState>displayWorldSafely:
>>
>>
>> From these tests it seems that the critical parts of OSProcess are
>> actually working with this configuration (modulo the forking).
>>
>> Adrian
>>
>> On Nov 19, 2009, at 06:03 , David T. Lewis wrote:
>>
>>> On Wed, Nov 18, 2009 at 09:44:08PM -0500, David T. Lewis wrote:
>>>> On Wed, Nov 18, 2009 at 05:14:04PM -0500, David T. Lewis wrote:
>>>>> On Wed, Nov 18, 2009 at 08:55:50AM -0500, Schwab,Wilhelm K wrote:
>>>>>> Dave,
>>>>>>
>>>>>> It would help to knock the MVC workspace out of the offending
>>>>>> #initialize
>>>>>> method and re-save the packages.  In my experience, that simple
>>>>>> change make
>>>>>> the load hassle-free vs. the current situation.
>>>>>
>>>>> Bill,
>>>>>
>>>>> Good idea, thanks. I'll take a look at that when I get home.
>>>>
>>>> Well actually there were not any MVC references in #initialize. But
>>>> CommandShell class>>initialize opens a shell window, and that was
>>>> failing
>>>> because text style 'Atlanta' no longer exists in Pharo. I fixed  
>>>> this,
>>>> so if you update to CommandShell-dtl.40.mcz that failure will no
>>>> longer
>>>> occur. The shell window does not actually work, but at least the
>>>> window
>>>> opens properly now. One bug down, ??? to go ...
>>>
>>> Correction, the shell window *does* seem to be working, so this is
>>> actually looking much better now. However, the CommandShellTestCase
>>> does not pass (hangs up part way through, lots of zombie unix
>>> processes
>>> left unhandled).
>>>
>>> The other unit tests are passing, with the exception of the tests in
>>> AioEventHandlerTestCase that use sockets. This is due to changes in
>>> the socket support in Pharo, but I am not worried about these  
>>> failures
>>> as they probably just require updates to the tests to match the
>>> Pharo socket support.
>>>
>>> I am testing on Linux with a VM that I built locally. For OS X, an
>>> updated OSProcessPlugin will need to be included with the VM,
>>> otherwise
>>> we will have VM crashes when handling external process exit.
>>>
>>> The main concerns now are:
>>>
>>> 1) Need an updated OSProcessPlugin for the Mac VM (for both Squeak
>>> and Pharo)
>>>
>>> 2) Why does CommandShellTestCase on Pharo get hung up and leave
>>> zombies?
>>>
>>> Note, CommandShellTestCase is a real stress test for OSProcess. It
>>> does
>>> a lot of concurrent process handling with pipelines of OS processes
>>> interacting with Squeak/Pharo. If this test does not pass, then I am
>>> not confident in the overall reliability of OSProcess.
>>>
>>> Dave
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
On Fri, Nov 20, 2009 at 09:45:48AM +0100, Adrian Lienhard wrote:

> Hi Dave,
>
> On Nov 20, 2009, at 02:42 , David T. Lewis wrote:
>
> [...]
>
> > I am getting serious failures on CommandShellTestCase that still worry
> > me. For example, if I evaluate this (on Linux VM with Pharo image):
> >
> >  (CommandShellTestCase selector: #testEvaluateOrMakePipelinesFrom)  
> > debug
>
> Indeed, CommandShellTestCase isn't that stable as I first thought.  
> I've run all tests of CommandShellTestCase in the Test runner multiple  
> times:
>
> 1. run: all green
> 2. run: error in testPipeline75 (re-running this test succeeded, so I  
> don't know what the error was)
> 3. run: test runner hangs in testIfThenElse02 because indefinitely  
> waiting on completionSemaphore in #evaluatePipelines:
>
> restarted the VM
> 1. run: all green
> 2. run: same as 3 above
> 3. run: same as 3 above
> 4. run: error in testPipeline72
> 5. run: all green
>
> I haven't seen any defunct processes, though.
>
> [...]
>
> > Second question:
> >
> > Some of the failures you are getting look like things that I thought
> > that I had fixed in the past (but I'm not sure). The latest versions
> > from the SqueakSource repositories should be:
> >
> >  OSProcess-dtl.53
> >  Tests-OSProcess-dtl.20
> >  CommandShell-dtl.40
> >  Tests-CommandShell-dtl.14
>
> I have the same versions except for CommandShell-dtl.39 (I updated to  
> 40 now).
>
> Let me know if I can be of any more help.

Hi Adrian,

Overall, it does look like the basic OSProcess functions that most people
would use are working as long as an up to date plugin is available.

The remaining issue that is relevant to the Pharo image (as opposed to
OSProcess running on any other image) is this CommandShellTestCase issue.
I think we are seeing different, but presumably related, symptoms of some
underlying problem. The tests in CommandShellTestCase do some rather complex
things with lots of processes, semaphore synchronization and so on. So I
think I will need to somehow whittle the problem down to some simpler test
that can provide some more reproduceable symptoms.

My working assumption is that one of the following is true:

1) There is something different in Pharo versus Squeak that is exposing
an existing bug in OSProcess/CommandShell. This is quite likely.

2) The CommandShellTestCase is exposing an issue in Pharo related to
Semaphore handling, Delay scheduling, or Process scheduling. The seems
less likely than #1, but still possible because these tests do drive
a lot of interacting processes, and might expose an issue the "normal"
users would never see.

One thing that I know could produce the sort of symptoms that I am seeing
would be anything that intermittently permitted a signal to a Semaphore
to be missed. This type of problem causes OSProcess to "miss" the exit
of one of its external processes, leading to zombie Unix processes and
tests in Pharo/Squeak that fail to run to completion.

For that reason, if anyone can think of any changes to process scheduling
and semaphore handling, that might give me an idea of where to look.

Thanks for all the help,
Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Stéphane Ducasse
david

thanks for chasing this difference.
I would love to be able to help but I'm concurrently bad :).

Stef

> Hi Adrian,
>
> Overall, it does look like the basic OSProcess functions that most people
> would use are working as long as an up to date plugin is available.
>
> The remaining issue that is relevant to the Pharo image (as opposed to
> OSProcess running on any other image) is this CommandShellTestCase issue.
> I think we are seeing different, but presumably related, symptoms of some
> underlying problem. The tests in CommandShellTestCase do some rather complex
> things with lots of processes, semaphore synchronization and so on. So I
> think I will need to somehow whittle the problem down to some simpler test
> that can provide some more reproduceable symptoms.
>
> My working assumption is that one of the following is true:
>
> 1) There is something different in Pharo versus Squeak that is exposing
> an existing bug in OSProcess/CommandShell. This is quite likely.
>
> 2) The CommandShellTestCase is exposing an issue in Pharo related to
> Semaphore handling, Delay scheduling, or Process scheduling. The seems
> less likely than #1, but still possible because these tests do drive
> a lot of interacting processes, and might expose an issue the "normal"
> users would never see.
>
> One thing that I know could produce the sort of symptoms that I am seeing
> would be anything that intermittently permitted a signal to a Semaphore
> to be missed. This type of problem causes OSProcess to "miss" the exit
> of one of its external processes, leading to zombie Unix processes and
> tests in Pharo/Squeak that fail to run to completion.
>
> For that reason, if anyone can think of any changes to process scheduling
> and semaphore handling, that might give me an idea of where to look.
>
> Thanks for all the help,
> Dave
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

Adrian Lienhard
In reply to this post by David T. Lewis
Hi Dave,

[...]

> The remaining issue that is relevant to the Pharo image (as opposed to
> OSProcess running on any other image) is this CommandShellTestCase  
> issue.

I'm not sure about this anymore. I just ran CommandShellTestCase a  
couple of times in a Squeak trunk image and the third time it also  
blocked on completionSemaphore. Do you see different problems on Linux?

> I think we are seeing different, but presumably related, symptoms of  
> some
> underlying problem. The tests in CommandShellTestCase do some rather  
> complex
> things with lots of processes, semaphore synchronization and so on.  
> So I
> think I will need to somehow whittle the problem down to some  
> simpler test
> that can provide some more reproduceable symptoms.

That would certainly be a good next step!

Cheers,
Adrian

[...]

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: OSProcess - working on gnuplot

David T. Lewis
On Sat, Nov 21, 2009 at 12:31:06PM +0100, Adrian Lienhard wrote:

> Hi Dave,
>
> [...]
>
> > The remaining issue that is relevant to the Pharo image (as opposed to
> > OSProcess running on any other image) is this CommandShellTestCase  
> > issue.
>
> I'm not sure about this anymore. I just ran CommandShellTestCase a  
> couple of times in a Squeak trunk image and the third time it also  
> blocked on completionSemaphore. Do you see different problems on Linux?
>

Yes I think that it must be behaving differently on Linux. On the
combination of Linux + Pharo, I get bad failures on every test run.

> > I think we are seeing different, but presumably related, symptoms of  
> > some
> > underlying problem. The tests in CommandShellTestCase do some rather  
> > complex
> > things with lots of processes, semaphore synchronization and so on.  
> > So I
> > think I will need to somehow whittle the problem down to some  
> > simpler test
> > that can provide some more reproduceable symptoms.
>
> That would certainly be a good next step!

Yes, I think so. I will see if I can narrow it down better.

Thanks again,

Dave


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
12