Tim Mooney wrote:

> In regard to: Re: gimp 1.1.18, Garry R. Osgood said (at 9:16pm on Mar 24, 2000):
> >
> >> <snipped...>
> >
> >> - on alpha-dec-osf4.0d, the program give all errors when loading
> >>   plugins even though plugin does not crash::
> >>
> >>  $  /usr/local/bin/gimp
> >>
> >> ** WARNING **: wire_read: error

> <snipped...>

> I've seen this at various times on all the alpha-dec-osf boxes I'ved tried
> compiling gimp on -- I think I may have been the first person to report it
> to the developer list.  At various times I've thought the problem had been
> fixed by some change in the gimp, but I just tried 1.1.19 on a 5.0 box with
> patch set #1 last weekend, and the same thing happened.  I have a 4.0f box
> that the problem doesn't happen for though.
> As I mentioned when I first reported this problem, it turns out that if you
> run the gimp under `trace' (just like truss) the first time you run the gimp,
> most of the plug-ins are queried successfully and work as expected thereafter.
> At that point, you can run gimp without tracing it, and the plugins work fine.
> It's only the first time through that this happens.


We're definitely going to need help from people with DEC-osf boxes;
between you and Philippe, you've shot my favorite theory down - that
it was a peculiarity of the 4.0F compiler - and I have SGI here, and don't
see it, and most active developers have various flavors of Linux or Solaris
and they don't see it.

It's a fairly well understood truth that the out-of-box gimp actually
starts up the plug-in to invoke its query() function on run-up, but afterwards
a "mature" gimp reads up on plugins from a resource file. So if the resource
file gets built the first time, the problem won't occur subsequently  - until
a new plug-in gets installed.

This leads to two ponder points:

1) the execution pathways on the gimp and plug-in side of the wire that
    are unique to query don't get exercised much - nice place for bugs to persist.

2) When an out-of-box gimp is querying all of those plug-ins, a whole lot
    of forking is going on - the OS is replicating the Gimp image into a new
    process, then overlaying that image with the plug-in executable. Not a
    trivial exercise. And it is happening RAT-TAT-TAT-TAT.  Methinks
    when you started tracing Gimp, you reduce an undiagnosed timing constraint
    on sending messages between processes and the problem goes away. If fork
   timing is an issue, then the isolated and relatively infrequent forks of plug-ins
   likely do not trigger the mis-reading of messages on the wire and they behave
   just fine.

If 2), then nothing bad is likely to be observed when single-stepping through
processes on both sides of the wire - near quiescent conditions - so a debugger
will likely not explicitly show anything. So one is led to ponder the architecture-
particular latencies that occur when a parent is forking off children in fairly
short order.

I'll give the aforementioned execution pathways a careful look this weekend,
and if something interesting suggests itself, I'll send -off-list mail to Tim
and other victims of #2742. Anyone with a DEC out there that wants to play in
this sandbox, come on in.

Be good, be well


Reply via email to