[squeak-dev] Error: ExternalUnixOSProcess not garbage-collected

Winfried Jacobs w.jacobs at gmx.de
Wed Apr 16 23:17:08 UTC 2008


Hello list,

I have a problem with  ExternalUnixOSProcess objects. In my squeak
program I create them a lot, but they do not get garbage-collected, and
after 1200 of  them are created, the program stops with an error:
'cannot create OS pipe' (error thrown in External pipe>>makePipe).

The following script demonstrates what is going on:

"### Script ###"

    1500 timesRepeat: [
         p := PipeableOSProcess command: 'ls'.

            "these commands don't make a difference ... :"
            "p  finalize."
            "p release."
            "p processProxy finalize."
            "p close; closePipes."

        Transcript
            show: PipeableOSProcess allInstances size;
            show: '-';
            show: ExternalUnixOSProcess allInstances size;
            space.
    ] .

    Smalltalk garbageCollect.

"### End of Script ###"

The Transcript shows that the number of PipeableOSProcess instances
stays constant (more or less), while the number of ExternalUnixOSProcess
instances goes up, and I have no idea how to get rid of them.

After restarting the squeak image (save-quit-start) the
ExternalUnixOSProcess objects are gone.

The configuration:

    - vm-version: Squeak3.9alpha on a Ubuntu Linux
    - image version: Squeak 3.9  ("Ramon Leon's image")
    - 'OSProcess versionInformation' gives:
        - OSProcess version 4.3.6
        - CommandShell version 4.3.2  (not installed in this image)

Does anybody have an idea what's possibly wrong?

Thank you in advance
Winfried






More information about the Squeak-dev mailing list