Mantis Bugtracker

Viewing Issue Advanced Details Jump to Notes ] View Simple ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004544 [Squeak] Kernel major always 08-14-06 05:54 12-19-12 13:46
Reporter wiz View Status public  
Assigned To
Priority normal Resolution duplicate Platform
Status closed   OS
Projection none   OS Version
ETA none Fixed in Version Product Version 3.9
  Product Build
Summary 0004544: In 7054 there are 194 unimplementedCalls including some that look like they might be important
Description For a browser with the list evaluate in a workspace:

SystemNavigation default browseAllUnimplementedCalls
Steps To Reproduce
Additional Information The long list I've uploaded as a file.

See Mantis 0004531 for one example of big problems in this list.

#newHashFor: is also no where implemented and is called by methods in Object that have a lot of callers themselves.

So I would suggest looking at the list and doing triage.

Attached Files  sq7054UnImplementedCalls.text [^] (9,554 bytes) 08-14-06 05:54
 7054unimp - old6665unimp.text [^] (1,746 bytes) 08-20-06 00:10
 7054 - 6665unimpAnnotedA-H.text [^] (3,382 bytes) 08-20-06 02:09
 7054 - 6665unimpAnnotedA-Z.text [^] (6,040 bytes) 08-20-06 04:08
 unimpList-wiz.1.text [^] (1,587 bytes) 10-16-06 07:57
 UnimpList8.text [^] (1,729 bytes) 11-05-06 07:21

- Relationships

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

SYSTEM WARNING: Creating default object from empty value

parent of 0004609closed wiz Squeak [Fix] Removal of ButtonPropertiesMorph left an unimplemented call. 
parent of 0005361closed  Squeak To reduce the unimplemented calls remove catagory Morph>slots-wonderland 
parent of 0005285closed wiz Squeak [Fix] In 7066 #rootInPasteUp is called but unimplemented. 
parent of 0005178closed  Squeak [Fix] DSA class has four callers of unimplemented methods 
parent of 0005176testing wiz Squeak # metaclass is an unimplemented call from PseudoClass>>theMetaClass 
parent of 0005175closed wiz Squeak [partial fix] In 7061 Package info has 9 unused methods one with an unimplemented call due to typo. 
parent of 0004952closed  Squeak [Fix] To clean up unimplementied calls VeryPickyMorph needs to be removed. 
parent of 0004610assigned andreas Squeak Packages In 7054 removal of ffi left lots of unimplemented calls in Parser 
has duplicate 0002101closed  Squeak SystemNavigation default allUnimplementedNonPrimitiveCalls 
Not all the children of this issue are yet resolved or closed.

- Notes
(0006613 - 791 - 851 - 851 - 851 - 851 - 851)
08-14-06 06:10

Reminder sent to: MarcusDenker, ScottWallace, stef

Hi Scott,

Scott thanks for the quick response. See what its found.

Hi Marcus and Stef,

Here are results from my query. Some missing methods look like they may be harmless. Others not so. And of course there is the first bug that started this line of inquiry.

Yours in service, -- Jerome Peace

(personal note: Just after I sent my post to squeak-dev I started having problems with my email account (I opened a piece of spam I should have left alone and the browser I used for email crashed. My yahoo account has become hard to access at least for now. It may clear up in a day but probably it will take longer. I can obviously send reminders via mantis but my ability to converse on squeak-dev or personally is going to be limited till I find out whats wrong and fix it.)
(0006620 - 143 - 143 - 143 - 143 - 143 - 143)
08-14-06 11:26

Yeah, and if you install the TraitsBrowser you will see, that most classes (if not all) in Squeak are abstract. This of course includes Object.
(0006656 - 830 - 920 - 920 - 920 - 920 - 920)
08-15-06 07:01

Hi pmm,

Thanks for your interest. And...

Huh? I don't see what you are getting at with your comment. Is it relevant to this report or is it something that deserves its own topic (i.e. report?)

The thrust of this report is that you will have strange behavior that affects the use of the system if unimplemented messages are called.
Since they are findable they should be looked at and either fixed or joined to their appropriate package and removed from any image we wish to label releasable (i.e. gamma).

Is what the Traits Browser is doing a show stopper??? Or just something that needs to be fixed for the sake of the Traits Browser?

Do you have anything relevant to add to the clearing up of the problem presented in this report?

Thanks for your consideration of this.

Yours in service, -- Jerome Peace
(0006657 - 349 - 385 - 385 - 385 - 385 - 385)
08-15-06 07:07

I found other things worth trying

SystemNavigation default unimplemented explore

that gives a presentation of the missing method names followed by their callers. ( I got a count of 187 from this which would be the number of missing methods. 194 is the number of methods that call them.)

I wonder what the previous releases 3.8 and 3.7 show.
(0006659 - 73 - 73 - 73 - 73 - 73 - 73)
08-15-06 08:06

Well TraitsBrower shows you all the unimplemented self sends for a class.
(0006676 - 870 - 967 - 967 - 967 - 967 - 967)
08-16-06 09:43


as you can see with the associated (now closed) duplicate, this issue has been reported
month ago. The problem is: Not many people care about these things enough to help fixing them.

We harvested a bunch a fixed that cleaned up unimplemented sends... but a lot need to be done.

Squeak is a *huge* pile of very messy mess... there is no way to ship any realease if we require
everything to be fixed. 3.9 will go live with 320 open bugreports, >25 failing tests and a lot
of mess that nobody had the energy to clean up.

Isn't it interesting that in our Smalltalk course, it just takes a couple of lectures before the students
realise "Hey, this is a mess"... the real sad thing is of course that we didn't improve over 10 years...
or worse: Most of the older Smalltalkers did not even realise over the last 10 years of Squeak that there
is a problem.
(0006686 - 1250 - 1322 - 1322 - 1322 - 1322 - 1322)
08-17-06 08:30

Hi Marcus,

I sympathize with your sentiment about not being able to ship any thing if everything needs to be cleaned up first.

And 3.9 has been an add and absorb iteration. You've put my stuff with polygons, stubs of Ned's connector stuff, traits, omnibrowser and smalland. 3.8 added Internationalization and started to add andreas's UI structures. 3.7 was an add on phase. and it takes going back a while before one sees any digestive phase.

My original thought was that 3.10 should be a strict refactoring and simplifiing step and 3.11 a strick bug fix (and simplify step.) Get some of these thing fixed before adding more clutter and more code that has to get aroung the broken stuff.

The open bug reports are a good sign not a sign of failure. Any efficient effort will add to the list of things to be done. even as things get taken care of. (because that can always happen faster and with less effort than the fixing).

You did a yeomans job of harvesting things, And that care and effort make you a hero in my book. It makes it worth the effort to continue to find and solve bugs.

I am happy to follow my curiosity in finding bugs and their fixes. I see use in that even if things can't be made perfect immediately.
(0006687 - 1046 - 1194 - 1194 - 1194 - 1194 - 1194)
08-17-06 08:47

Now back to the topic.

Historical research gives the following trend

3.7 (5976) 170 unimplemented
3.8 (6665) 176 "
3.9 (7054) 187 "

So the next step is to find out which are the new ones.
then to decide if they are intentional (zork's ) , harmless ( pieces of packages not in basic) or ticking timebombs.

It would also be good to split the 187 list into a bunch of different lists each with there own reason for being present.
With those list available for filtering we could come up with a test for new unimplemented called methods and stomp them early.

Third iteration start moving the callers of each list into appropriate packages and remove them from the releasable image.

Hi pmm,

Can you get the traits browser to collect printable lists of these umimplemented call to self? Would that be useful to add to this report and analysis?

Are the number of unimplemented methods similar to what I am getting from the system navigator or do you get substatially more or less?

Yours in service, -- Jerome Peace
(0006744 - 444 - 516 - 516 - 516 - 516 - 516)
08-20-06 00:09
edited on: 08-20-06 00:18


There are 77 unimplemented callees in 7054 that were not in 6665 (or 5976).

Some of them imply that some cleanup is inorder.

The good news is that eliminating the 5976 unimplemented from this list leaves it unchanged. So the differences are fully explained by comparing the two most recent versions.

So I've started to do that. And found immediately one that is my responsibility.

More individual reports will follow.

(0006745 - 1689 - 1939 - 1939 - 2056 - 2056 - 2056)
08-20-06 02:26
edited on: 08-20-06 04:10

7054 - 6665unimpAnnotedA-H.text is a partially annotated list.
7054 - 6665unimpAnnotedA-z.text is a fully annotated list.

I went thru a-z and tracked down the reasons for the unimplemented calls.

The main "timebombs" are there due to the ffi removal and the loss of ExternalType methods.

MC and SM are also reasons for unimplemented calls.

I found two that were my responsibility (see mantis 0004609 for fixes)

Many unimplemented methods had just one caller.

The way to track and annotate became.

-Select method from list (the list is in a workspace)
-Cmd-n to browse senders
-If one sender browse versions
-Use halos to focus on the list item till I'm down to the lazylist.
-get the inspector for this via the debug halo handle
-select the listitems and copy the annotation.
-close the now unneed browsers
-post the annotation as a comment next to the unimplemented method name (in the workspace)

The version annotation is important to me because it also indicates a programmer who may wish to take responsibility for cleaning up the unimplemented calls.

If the annotation looks old enough to be in 6665 I look for an implementaion of the method in a 6665 image. (I have two images up at the same time to make this easier.)

When the list is gone thru we can start writing more reports to focus on each catagory.

Also if someone can figure a good way to automatically generate the version annotations and format a good looking report on all of the unimplemented calls that would be helpful. (Post general findings to this report).

Yours in service, --Jerome Peace


I mentioning all this because it would be nice to get some help.

(0007581 - 1831 - 4098 - 4098 - 4098 - 4098 - 4098)
10-05-06 04:39

The following is a way to split up the unimplementeds by selecting out phrases from the 'Class>method' strings. I have been using this on 7061

and have whittled the list from 194 down to around 50 or so. Finding some fixes and candidates for removal along the way.

To save time I will usually define unimp only once (or after I have done a fixup or deletion). Then play around with the phrases to get a split.
The select the last item in unimpList and explore it to find more pharses.

The idea is to eliminate of have a good explanation for everything in the list.

This is preliminary progress. The phases and phase order are in flux. Feel free to play. The object is to be able to focus on the ones that need fixup attention.

unimp := SystemNavigation default unimplemented .
[ :list |
    unimpList := OrderedCollection new add: unimp ; yourself .

    list do: [ :phrase |
            | remaining |
            remaining := unimpList removeLast .
            unimpList add: (remaining select: [ :each | each value anySatisfy: [ :each1 |
                        each1 includesSubstring: phrase caseSensitive: false ] ]) ;
                        add:( remaining reject: [ :each | each value anySatisfy: [ :each1 |
                        each1 includesSubstring: phrase caseSensitive: false ] ] )
                ] ]
        value: { '>ccg:' "primitives from vmmaker"
        . 'test' "test case temp ivars"
        . 'Kedama' "there are a lot of these"
        . 'BalloonE' "Balloon engine"
        . 'SAR'
        . 'parse'
        . 'para' "paragraph"
        . 'hand'
        . 'SM' "Lots due to squeak map"
        . 'MC'
        . 'bob1' "a couple alignment morph"
        . 'Transfer'
        . 'fog' "Player stuff i wonder what fog was used for?"
        . 'Form'
        . 'menu'
        . 'transla'
        . 'tile'
        . 'dict' "Memory Hogs is not used see mantis"
        . 'simula' } .
            unimpList explore .
(0007696 - 583 - 694 - 694 - 694 - 694 - 694)
10-16-06 08:04
edited on: 10-16-06 08:07

Uploaded unimpList-wiz.1.text. This is the latest iteration of the list splitting code

Load this into a working Workspace.

Evaluate the first line once. Then
 evaluate everything between the following pair of brakets.

An explorer will pop up with list of dictionary entries followed by
 the text phrase used to split off that piece and
 the number of entries in that split off piece.

Edit the list of phrases to refine the splits.
And please tackle any unimplemented's you think you can find solutions to.

Place the remedies on Mantis. Thanks for your help.

(0008061 - 614 - 769 - 769 - 769 - 769 - 769)
11-05-06 07:37
edited on: 01-27-07 05:38


This contains the most recent iteration of the spliting code.

After each split the collection contains:
the count of what remained before the split
the phrase used to isolate the split
the number of entries split off.

Copy the text into a workspace.

Evaluate the first line once. Then
 evaluate everything between the following pair of brackets.

modify the list of phrases as desired.

examine the resulting explorer.

Yours in service, --Jerome Peace

PS. For the ones I've tackled you can find reports on mantis.
Go to view issues and search on 'unimp'

(0009231 - 626 - 698 - 698 - 698 - 698 - 698)
01-27-07 05:37

Ok. Now that Ralph has pointed out this report on squeak-dev I need to add a couple of things.

First I am not actively persuing the clean up at the present time. So there is opprotunity and a need for other contributions.

1) A sunit tests need to be from the UnimpList probes.
2) The unimplemented themselves need to be looked at and a way of getting rid of them found. If you add reports to mantis they will get connected to this one.

And slightly off topic.
3) There probably needs to be a similar probe for the unsent messages.

Anyone want to help. (If so just dig in.)

Yours in service, --Jerome Peace
(0014266 - 35 - 35 - 35 - 191 - 191 - 191)
12-19-12 13:46

See 0007481 for the up to date issue.

- Issue History
Date Modified Username Field Change
08-14-06 05:54 wiz New Issue
08-14-06 05:54 wiz File Added: sq7054UnImplementedCalls.text
08-14-06 06:10 wiz Issue Monitored: MarcusDenker
08-14-06 06:10 wiz Issue Monitored: ScottWallace
08-14-06 06:10 wiz Issue Monitored: stef
08-14-06 06:10 wiz Note Added: 0006613
08-14-06 10:25 MarcusDenker Relationship added has duplicate 0002101
08-14-06 11:26 pmm Note Added: 0006620
08-15-06 07:01 wiz Note Added: 0006656
08-15-06 07:07 wiz Note Added: 0006657
08-15-06 08:06 pmm Note Added: 0006659
08-16-06 09:43 MarcusDenker Note Added: 0006676
08-17-06 08:30 wiz Note Added: 0006686
08-17-06 08:47 wiz Note Added: 0006687
08-20-06 00:09 wiz Note Added: 0006744
08-20-06 00:10 wiz File Added: 7054unimp - old6665unimp.text
08-20-06 00:18 wiz Note Edited: 0006744
08-20-06 02:09 wiz File Added: 7054 - 6665unimpAnnotedA-H.text
08-20-06 02:26 wiz Note Added: 0006745
08-20-06 04:08 wiz File Added: 7054 - 6665unimpAnnotedA-Z.text
08-20-06 04:10 wiz Note Edited: 0006745
09-04-06 18:28 JTS Issue Monitored: JTS
10-05-06 04:39 wiz Note Added: 0007581
10-16-06 07:57 wiz File Added: unimpList-wiz.1.text
10-16-06 08:04 wiz Note Added: 0007696
10-16-06 08:07 wiz Note Edited: 0007696
11-05-06 07:21 wiz File Added: UnimpList8.text
11-05-06 07:37 wiz Note Added: 0008061
01-20-07 05:53 wiz Relationship added parent of 0004609
01-20-07 05:58 wiz Relationship added parent of 0005361
01-20-07 06:03 wiz Relationship added parent of 0005285
01-20-07 06:04 wiz Relationship added related to 0005178
01-20-07 06:04 wiz Relationship added parent of 0005176
01-20-07 06:05 wiz Relationship replaced parent of 0005178
01-20-07 06:06 wiz Relationship added parent of 0005175
01-20-07 06:07 wiz Relationship added parent of 0004952
01-20-07 06:08 wiz Relationship added parent of 0004610
01-27-07 05:37 wiz Note Added: 0009231
01-27-07 05:38 wiz Note Edited: 0008061
12-19-12 13:46 FrankShearar Status new => closed
12-19-12 13:46 FrankShearar Note Added: 0014266
12-19-12 13:46 FrankShearar Resolution open => duplicate

Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
170 total queries executed.
84 unique queries executed.
Powered by Mantis Bugtracker