Skip to content

Instance of SpLabelPresenter did not understand #displayStrikethrough #774

Description

@demarey

When running 4.0-alpha-2 (https://github.com/pharo-project/pharo-launcher/actions/runs/28795198307), a DNU occurs:

Instance of SpLabelPresenter did not understand #displayStrikethrough
SpLabelPresenter(Object)>>doesNotUnderstand: #displayStrikethrough
GtkLabelAdapter>>applyDecorationsTo:label:
GtkLabelAdapter>>setLabelTo:
GtkLabelAdapter>>addModelTo:
GtkLabelAdapter(GtkAdapter)>>buildWidget
GtkLabelAdapter(SpAbstractAdapter)>>adapt:
[ super adapt: aPresenter ] in GtkLabelAdapter(GtkAdapter)>>adapt: in Block: [ super adapt: aPresenter ]
GtkRunLoop>>defer:
GRunLoop class>>defer:
GtkLabelAdapter(GtkAdapter)>>adapt:
SpAbstractWidgetLayout>>adapt:bindings:
SpAbstractWidgetLayout>>buildAdapterFor:bindings:
SpLabelPresenter(SpAbstractPresenter)>>basicBuildAdapterWithLayout:
SpLabelPresenter(SpPresenter)>>basicBuildAdapterWithLayout:
SpLabelPresenter(SpAbstractWidgetPresenter)>>basicBuildAdapterWithLayout:
[ self basicBuildAdapterWithLayout: aSpecLayout ] in SpLabelPresenter(SpAbstractPresenter)>>buildAdapterWithLayout: in Block: [ self basicBuildAdapterWithLayout: aSpecLayout ]
[ activeProcess
			psValueAt: index
			put: anObject.
		aBlock value ] in SpBindings(DynamicVariable)>>value:during: in Block: [ activeProcess...
FullBlockClosure(BlockClosure)>>ensure:
SpBindings(DynamicVariable)>>value:during:
SpBindings class(DynamicVariable class)>>value:during:
SpLabelPresenter(SpAbstractPresenter)>>buildAdapterWithLayout:
SpLabelPresenter(SpAbstractPresenter)>>buildWithLayout:
SpLabelPresenter(SpAbstractPresenter)>>buildWithSelector:
GtkBoxAdapter>>basicAdd:constraints:to:
[ :gtkWidget | 
		| childWidget |
		
		childWidget := self 
			basicAdd: aPresenter
			constraints: constraints 
			to: gtkWidget.
		self addWidgetAlignment: constraints to: childWidget.
		"I'm keeping a reference to aPresenter into the built widget because in some cases 
		 it can be GC (in case of the on-the-fly creation, for example). 
		 Now this can be a real bad idea :)"
		childWidget data: aPresenter ] in GtkBoxAdapter(GtkLayoutAdapter)>>add:constraints: in Block: [ :gtkWidget | ...
[ aBlock value: widget ] in [
		[ aBlock value: widget ]
		on: Error 
		fork: [ :e | e pass ]
		return: [ nil ] ] in GtkBoxAdapter(GtkLayoutAdapter)>>widgetDo: in Block: [ aBlock value: widget ]
FullBlockClosure(BlockClosure)>>on:do:
[ Processor terminateRealActive ] in [:ex |
		| onDoCtx handler bottom thisCtx |

		onDoCtx := thisContext.
		thisCtx := onDoCtx home.

		"find the context on stack for which this method's is sender"

		[ onDoCtx sender == thisCtx] whileFalse: [
			onDoCtx := onDoCtx sender.
			onDoCtx ifNil: [
				"Can't find our home context. seems like we're already forked
				and handling another exception in new thread. In this case, just pass it through handler."
				^ handlerAction cull: ex ] ].

		bottom := [ Processor terminateRealActive ] asContext.
		onDoCtx privSender: bottom.

		handler := [ handlerAction cull: ex ] asContext.
		handler privSender: thisContext sender.

		(Process forContext: handler priority: Processor activePriority) resume.

		"cut the stack of current process"
		thisContext privSender: thisCtx.
		answerAction cull: exception ] in FullBlockClosure(BlockClosure)>>on:fork:return: in Block: [ Processor terminateRealActive ]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions