VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

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

VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Runar Jordahl
When we load our top bundle using atomic loadin VisualWorks 7.7, a
virtual machine dialog is raised with “Fatal error: No method found
for doesNotUnderstand:”. The image then quits.

If we load with atomic loading turned off, everything works fine.

We have found the method causing the error. It is an extension method to Point:
  projectPragmas
    <addAttribute: #x type: #Float
    <addAttribute: #y type: #Float>

If we remove this method, load works with atomic loading.

(We also have a Point class method which defines the pragma.)

If we try loading only the package containing the extension, or the
package’s immediate sub-bundle, everything works OK. We only run into
the problem when loading our entire code base.

Does anyone know how our extension method defining a pragma could
cause these problems? If not, where in the Store code could I look for
clues on this?

Kind regards
Runar

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Alan Knight-2
This is a complete guess. But you've got a method here which looks like it's adding pragmas and that those aren't in the base system, so you've probably got multiple levels of pragmas defined. When methods containing pragmas are added to a class, you get an instanceMethodsChanged/classMethodsChanged broadcast. The atomic loader attempts to defer all of that while installing code, but it's possible that something goes wrong with that, and the message is broadcast at a point where it causes the error you're seeing. In fact, now that I think about it, it might even happen during compilation, where I don't know that those messages are suppressed. So you might be getting the instanceMethodsChanged broadcast in shadow, which might be less equipped to deal with it. That might explain why you'd get the error you're seeing. If it attempts to send an unknown message to an extension class in shadow, that class is probably not complete, and it might end up not finding a doesNotUnderstand: method.

I'm waving my hands a bit, but that's the sort of area I'd look at first.

At 06:00 AM 2010-03-16, Runar Jordahl wrote:
When we load our top bundle using atomic loadin VisualWorks 7.7, a
virtual machine dialog is raised with “Fatal error: No method found
for doesNotUnderstand:”. The image then quits.

If we load with atomic loading turned off, everything works fine.

We have found the method causing the error. It is an extension method to Point:
  projectPragmas
    <addAttribute: #x type: #Float
    <addAttribute: #y type: #Float>

If we remove this method, load works with atomic loading.

(We also have a Point class method which defines the pragma.)

If we try loading only the package containing the extension, or the
package’s immediate sub-bundle, everything works OK. We only run into
the problem when loading our entire code base.

Does anyone know how our extension method defining a pragma could
cause these problems? If not, where in the Store code could I look for
clues on this?

Kind regards
Runar

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

--
Alan Knight [|], Engineering Manager, Cincom Smalltalk

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Samuel S. Shuster-2
In reply to this post by Runar Jordahl

On Mar 16, 2010, at 5:00 AM, Runar Jordahl wrote:

> We have found the method causing the error. It is an extension method to Point:
>  projectPragmas
>    <addAttribute: #x type: #Float
>    <addAttribute: #y type: #Float>
>
> If we remove this method, load works with atomic loading.

First off, I hope you mean:

   <addAttribute: #x type: #Float>
   <addAttribute: #y type: #Float>

(Note missing ">" at the end of the first line)

Following on what Alan said, please try this and let us know if it solves the problem...

Add a property to the "problem" package named #installBeforeContinuing, the value associated with it does not matter.

This forces the package (and any pending packages) to go into install mode immediately.

                                And So It Goes
                                     Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, Store Project
Smalltalk Enables Success -- What Are YOU Using?





_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Runar Jordahl
My method does include “>” to end the pragma, sorry about the confusion.

I tried adding property installBeforeContinuing and then load our code
again, but I get the same error as before.

Kind regards
Runar Jordahl

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Samuel S. Shuster-2
Runar:

> My method does include “>” to end the pragma, sorry about the confusion.
>
> I tried adding property installBeforeContinuing and then load our code
> again, but I get the same error as before.

Nutz!

I was hoping it would work because... Well, we have pragmas in our system and they don't show this kind of problem, so we would need a case we can reproduce here.

We/I can't come up with one, so that leaves this somewhat in an awkward position. Is it possible for you to contact support and possibly provide them with some way of reproducing this problem? I know that puts a burden on you, but without a reproducible case, we're at a loss to move forward....

And we really do want to, since in 7.8 we intend to remove the atomic loader on/off setting, and have it only be "on" (although the old loader code will still be there).

                                And So It Goes
                                     Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, Store Project
Smalltalk Enables Success -- What Are YOU Using?





_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: VW 7.7: Atomic Load Fails with “No method found for doesNotUnderstand:”

Runar Jordahl
Thank you for your quick response.

We might need to take this to Cincom support, but right now
reproducing it means loading all our source code. We really want to
make the bug reproducable outside our code, but failed.

I will try to do some debugging of Store code myself, and see what turns up.

Kind regards
Runar Jordahl
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc