Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MNU in debugger and breakpoint browser if there is a method breakpoint in an unbound method #1

Open
martinmcclure opened this issue Sep 14, 2021 · 0 comments
Assignees
Labels
bug Something isn't working

Comments

@martinmcclure
Copy link
Member

If the gem has in memory a method breakpoint in an unbound method, Jadeite breakpoint browsers and debuggers will fail with an MNU in RowanQueryService >> methodServicesFrom:.
To reproduce, execute in Jadeite

| method |

method :=
     '' _compileInContext: nil
          symbolList: GsCurrentSession currentSession symbolList.

method setBreakAtStepPoint: 1.

^ method

then open a debugger or breakpoint browser. The resulting stack is below. The cause appears to be that the breakpoint is in a method whose class is nil, and nil is being sent #thisClass.

To see this failure the server must be recent enough 3.7 to have the fix for bug 49650, which caused an earlier MNU but was fixed a month ago.

A very similar issue in GBS was reported as bug 49682, and subsequently fixed to list the class as "nil."

a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'

[1] MessageNotUnderstood >> defaultAction @10 line 7
[2] MessageNotUnderstood (AbstractException) >> _defaultAction @4 line 4
[3] MessageNotUnderstood (AbstractException) >> _signalWith: @5 line 25
[4] MessageNotUnderstood (AbstractException) >> signal @2 line 47
[5] UndefinedObject (Object) >> doesNotUnderstand: @9 line 10
[6] UndefinedObject (Object) >> _doesNotUnderstand:args:envId:reason: @8 line 14
[7] [] in RowanQueryService >> methodServicesFrom: @25 line 6
[8] Array (SequenceableCollection) >> collect: @9 line 16
[9] RowanQueryService >> methodServicesFrom: @4 line 5
[10] RowanQueryService >> basicBreakpointMethods @8 line 6
[11] RowanAnsweringService >> disableAllBreaks @4 line 5
[12] RowanAnsweringService >> setBreakPointsAreEnabled: @4 line 4
[13] RowanAnsweringService (Object) >> perform:withArguments: @1 line 12
[14] RowanAnsweringService (RowanService) >> servicePerform:withArguments: @7 line 14
[15] [] in JadeServer >> updateFromSton: @35 line 13
[16] OrderedCollection (Collection) >> do: @5 line 10
[17] [] in JadeServer >> updateFromSton: @24 line 9
[18] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[19] [] in JadeServer >> updateFromSton: @12 line 14
[20] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[21] JadeServer64bit35 (JadeServer) >> updateFromSton: @2 line 23
[22] GsNMethod class >> _gsReturnToC @1 line 11
===============================================
[1] MessageNotUnderstood >> defaultAction @10 line 7
	receiver oop(29624321) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'

instance variables:
	-currGsHandler oop(20) == nil
	-envId oop(2) == 0
	-gsArgs oop(29624577) == anArray( )
	-gsDetails oop(20) == nil
	-gsNumber oop(16082) == 2010
	-gsReason oop(20) == nil
	-gsResumable oop(268) == true
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(29607169) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''thisClass'''
	-receiver oop(20) == nil
	-selector oop(2810625) == #'thisClass'
	-tag oop(20) == nil

temporary variables and parameters:
	blk oop(20) == nil
	res oop(20) == nil
----------------------------------------------------
[2] MessageNotUnderstood (AbstractException) >> _defaultAction @4 line 4
	receiver oop(29624321) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'

instance variables:
	-currGsHandler oop(20) == nil
	-envId oop(2) == 0
	-gsArgs oop(29624577) == anArray( )
	-gsDetails oop(20) == nil
	-gsNumber oop(16082) == 2010
	-gsReason oop(20) == nil
	-gsResumable oop(268) == true
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(29607169) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''thisClass'''
	-receiver oop(20) == nil
	-selector oop(2810625) == #'thisClass'
	-tag oop(20) == nil

temporary variables and parameters:
	res oop(20) == nil
----------------------------------------------------
[3] MessageNotUnderstood (AbstractException) >> _signalWith: @5 line 25
	receiver oop(29624321) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'

instance variables:
	-currGsHandler oop(20) == nil
	-envId oop(2) == 0
	-gsArgs oop(29624577) == anArray( )
	-gsDetails oop(20) == nil
	-gsNumber oop(16082) == 2010
	-gsReason oop(20) == nil
	-gsResumable oop(268) == true
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(29607169) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''thisClass'''
	-receiver oop(20) == nil
	-selector oop(2810625) == #'thisClass'
	-tag oop(20) == nil

temporary variables and parameters:
	inCextensionArg oop(20) == nil
	res oop(20) == nil
----------------------------------------------------
[4] MessageNotUnderstood (AbstractException) >> signal @2 line 47
	receiver oop(29624321) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'

instance variables:
	-currGsHandler oop(20) == nil
	-envId oop(2) == 0
	-gsArgs oop(29624577) == anArray( )
	-gsDetails oop(20) == nil
	-gsNumber oop(16082) == 2010
	-gsReason oop(20) == nil
	-gsResumable oop(268) == true
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(29607169) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''thisClass'''
	-receiver oop(20) == nil
	-selector oop(2810625) == #'thisClass'
	-tag oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[5] UndefinedObject (Object) >> doesNotUnderstand: @9 line 10
	receiver oop(20) == nil

instance variables:

temporary variables and parameters:
	aMessageDescriptor oop(28277761) == thisClass
	args oop(29624577) == anArray( )
	ex oop(29624321) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'thisClass'
	sel oop(2810625) == #'thisClass'
----------------------------------------------------
[6] UndefinedObject (Object) >> _doesNotUnderstand:args:envId:reason: @8 line 14
	receiver oop(20) == nil

instance variables:

temporary variables and parameters:
	anArray oop(29624577) == anArray( )
	aSmallInt oop(2) == 0
	aSymbol oop(2810625) == #'thisClass'
	dnuKind oop(2) == 0
----------------------------------------------------
[7] [] in RowanQueryService >> methodServicesFrom: @25 line 6
	receiver oop(29527809) == anExecBlock1

instance variables:

temporary variables and parameters:
	gsNMethod oop(29603073) == GsNMethod <nil>>><anonymous>
	self oop(29521921) == aRowanQueryService
----------------------------------------------------
[8] Array (SequenceableCollection) >> collect: @9 line 16
	receiver oop(29528065) == anArray( GsNMethod <nil>>><anonymous>)

instance variables:

temporary variables and parameters:
	aBlock oop(29527809) == anExecBlock1
	i oop(10) == 1
	mySize oop(10) == 1
	result oop(29606401) == anArray( nil)
----------------------------------------------------
[9] RowanQueryService >> methodServicesFrom: @4 line 5
	receiver oop(29521921) == aRowanQueryService

instance variables:
	-command oop(20) == nil
	-commandArgs oop(20) == nil
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-queryResults oop(20) == nil
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	methods oop(29528065) == anArray( GsNMethod <nil>>><anonymous>)
	sorted oop(29619457) == aSortedCollection( )
----------------------------------------------------
[10] RowanQueryService >> basicBreakpointMethods @8 line 6
	receiver oop(29521921) == aRowanQueryService

instance variables:
	-command oop(20) == nil
	-commandArgs oop(20) == nil
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-queryResults oop(20) == nil
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	bpArray oop(29632001) == anArray( anArray( 1, nil, nil, 1, GsNMethod <nil>>><anonymous>, false, 0))
	bpMethods oop(29528065) == anArray( GsNMethod <nil>>><anonymous>)
----------------------------------------------------
[11] RowanAnsweringService >> disableAllBreaks @4 line 5
	receiver oop(28277249) == aRowanAnsweringService

instance variables:
	-answer oop(268) == true
	-command oop(39287041) == #'setBreakPointsAreEnabled:'
	-commandArgs oop(28274177) == anArray( false)
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	methodServices oop(20) == nil
----------------------------------------------------
[12] RowanAnsweringService >> setBreakPointsAreEnabled: @4 line 4
	receiver oop(28277249) == aRowanAnsweringService

instance variables:
	-answer oop(268) == true
	-command oop(39287041) == #'setBreakPointsAreEnabled:'
	-commandArgs oop(28274177) == anArray( false)
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	boolean oop(12) == false
----------------------------------------------------
[13] RowanAnsweringService (Object) >> perform:withArguments: @1 line 12
	receiver oop(28277249) == aRowanAnsweringService

instance variables:
	-answer oop(268) == true
	-command oop(39287041) == #'setBreakPointsAreEnabled:'
	-commandArgs oop(28274177) == anArray( false)
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	anArray oop(28274177) == anArray( false)
	aSelectorSymbol oop(39287041) == #'setBreakPointsAreEnabled:'
----------------------------------------------------
[14] RowanAnsweringService (RowanService) >> servicePerform:withArguments: @7 line 14
	receiver oop(28277249) == aRowanAnsweringService

instance variables:
	-answer oop(268) == true
	-command oop(39287041) == #'setBreakPointsAreEnabled:'
	-commandArgs oop(28274177) == anArray( false)
	-definition oop(20) == nil
	-organizer oop(29619201) == aClassOrganizer
	-updates oop(20) == nil
	-updateType oop(20) == nil

temporary variables and parameters:
	collection oop(28274177) == anArray( false)
	symbol oop(39287041) == #'setBreakPointsAreEnabled:'
----------------------------------------------------
[15] [] in JadeServer >> updateFromSton: @35 line 13
	receiver oop(28267521) == anExecBlock1

instance variables:

temporary variables and parameters:
	organizer oop(29619201) == aClassOrganizer
	service oop(28277249) == aRowanAnsweringService
----------------------------------------------------
[16] OrderedCollection (Collection) >> do: @5 line 10
	receiver oop(28267265) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)

instance variables:

temporary variables and parameters:
	aBlock oop(28267521) == anExecBlock1
	i oop(18) == 2
----------------------------------------------------
[17] [] in JadeServer >> updateFromSton: @24 line 9
	receiver oop(28264193) == anExecBlock0

instance variables:

temporary variables and parameters:
	services oop(28267265) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
----------------------------------------------------
[18] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(28264193) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(29437185) == GsInteractionRequest
	fastPath oop(268) == true
	handlerBlock oop(28262145) == anExecBlock
----------------------------------------------------
[19] [] in JadeServer >> updateFromSton: @12 line 14
	receiver oop(28261121) == anExecBlock0

instance variables:

temporary variables and parameters:
	organizer oop(29619201) == aClassOrganizer
	resultString oop(20) == nil
	self oop(30009345) == aJadeServer64bit35
	services oop(28267265) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
	stonString oop(29622017) == 'OrderedCollection[RowanLoggingService{#command:#logReceivedServices,#commandArgs:[],#id:0,#groupId:311,#services:OrderedCollection[RowanAnsweringService{#command:#''setBreakPointsAreEnabled:'',#comma...
----------------------------------------------------
[20] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(28261121) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(130817) == Error
	fastPath oop(268) == true
	handlerBlock oop(69536769) == anExecBlock1
----------------------------------------------------
[21] JadeServer64bit35 (JadeServer) >> updateFromSton: @2 line 23
	receiver oop(30009345) == aJadeServer64bit35

instance variables:
	-classList oop(20) == nil
	-classOrganizers oop(28257793) == anArray( nil, nil, nil, nil)
	-environment oop(2) == 0
	-methodCommandResult oop(20) == nil
	-methodFilters oop(20) == nil
	-methodFilterType oop(20) == nil
	-readStream oop(20) == nil
	-selectedClass oop(20) == nil
	-selections oop(20) == nil
	-writeStream oop(20) == nil

temporary variables and parameters:
	organizer oop(29619201) == aClassOrganizer
	resultString oop(20) == nil
	services oop(28267265) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
	stonString oop(29622017) == 'OrderedCollection[RowanLoggingService{#command:#logReceivedServices,#commandArgs:[],#id:0,#groupId:311,#services:OrderedCollection[RowanAnsweringService{#command:#''setBreakPointsAreEnabled:'',#comma...
----------------------------------------------------
[22] GsNMethod class >> _gsReturnToC @1 line 11
	receiver oop(144897) == GsNMethod

instance variables:

temporary variables and parameters:
@martinmcclure martinmcclure added the bug Something isn't working label Sep 14, 2021
dalehenrich pushed a commit that referenced this issue Mar 14, 2024
Fix revision typo in RowanClientServices.ston
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants