pharo-launcher icon indicating copy to clipboard operation
pharo-launcher copied to clipboard

Pharo Launcher 3.0 MacOS x64 from Pharo.org doesn't (launch!)

Open GrahamMcLeod opened this issue 2 years ago • 13 comments

Hi Was excited to see the new release. Downloaded from Pharo.org MacOs x64 and installed on MacBook Pro Intel Monterey 12.1 On initial launch asked for permission to access Document directory, which I granted. No UI appeared. Subsequent attempts to launch just result in a bouncing icon in the Dock, which eventually stops. Thought it was maybe something weird in my Mac setup (I have had issues with the last version launcher too). Tried the Windows version in my VMWare / Windows 10 system with similar result of No UI.

GrahamMcLeod avatar Apr 19 '22 23:04 GrahamMcLeod

Hi graham Ouch thanks for your feedback. This is super strange because I have the same machine and OS version and tried to multiple ones and it works. There is really a problem with Monterrey

Ducasse avatar Apr 20 '22 14:04 Ducasse

I have the same problem on Windows 11.

When I launch the launcher, I have a pharo VM in the background process, but the launcher never shows and there is no "Pharo launcher" listed in the list of open apps. (The windows task manager makes the difference between apps, background processes and windows processes)

jecisc avatar Apr 20 '22 14:04 jecisc

Thanks Cyril. We will investigate it.

Ducasse avatar Apr 20 '22 14:04 Ducasse

I found a std_err file next to the launcher image with this content:

[31m
[0mProcess>>doTerminationFromAnotherProcess
Process>>terminate
PhLImageDescriptionUpdater>>terminateProcess
PhLImageDescriptionUpdater>>image:description:
PhLImageDescriptionUpdater class>>image:description:
PhLImageDetailPresenter>>updateImageDescription:
[ :text | self updateImageDescription: text ] in PhLImageDetailPresenter>>connectPresenters in Block: [ :text | self updateImageDescription: text ]
FullBlockClosure(BlockClosure)>>cull:
FullBlockClosure(BlockClosure)>>cull:cull:
[ :block | block cull: self value cull: oldValue ] in ObservableValueHolder>>valueChanged: in Block: [ :block | block cull: self value cull: oldValue ]...etc...
OrderedCollection>>do:
ObservableValueHolder>>valueChanged:
[ | oldValue |
	oldValue := value.
	value := anObject.
	self valueChanged: oldValue ] in ObservableValueHolder>>value: in Block: [ | oldValue |...
FullBlockClosure(BlockClosure)>>ensure:
ObservableValueHolder>>value:
SpTextPresenter(SpAbstractTextPresenter)>>text:
[
		self presenter text: aString.
		"Raise an announcement"
		self presenter changed: #clearUserEdits] in SpMorphicTextAdapter(SpMorphicBaseTextAdapter)>>accept:notifying: in Block: [...
FullBlockClosure(BlockClosure)>>ensure:
SpMorphicTextAdapter(SpMorphicBaseTextAdapter)>>accept:notifying:
SpMorphicTextAdapter>>accept:notifying:
SpRubScrolledTextMorph(RubScrolledTextMorph)>>acceptTextInModel
SpRubScrolledTextMorph(RubScrolledTextMorph)>>acceptContents
SpRubScrolledTextMorph(RubScrolledTextMorph)>>textChanged
RubTextScrollPane>>textChanged
RubEditingArea(RubAbstractTextArea)>>paragraphReplacedTextFrom:to:with:
[ 
			self composer emphasisHere: textArea emphasisHere.
			self composer replaceFrom: start to: stop with: aText.
			self text: self composer text.
			textArea paragraphWasComposedFrom: start to: stop.
			textArea paragraphReplacedTextFrom: start to: stop with: aText ] in RubParagraph>>replaceFrom:to:with: in Block: [ ...
FullBlockClosure(BlockClosure)>>ensure:
RubParagraph>>disableDrawingWhile:
RubParagraph>>replaceFrom:to:with:
RubCurrentLineBarDecorator(RubParagraphDecorator)>>replaceFrom:to:with:
[0m[31m
[0mProcess>>doTerminationFromAnotherProcess
Process>>terminate
PhLImageDescriptionUpdater>>terminateProcess
PhLImageDescriptionUpdater>>image:description:
PhLImageDescriptionUpdater class>>image:description:
PhLImageDetailPresenter>>updateImageDescription:
[ :text | self updateImageDescription: text ] in PhLImageDetailPresenter>>connectPresenters in Block: [ :text | self updateImageDescription: text ]
FullBlockClosure(BlockClosure)>>cull:
FullBlockClosure(BlockClosure)>>cull:cull:
[ :block | block cull: self value cull: oldValue ] in ObservableValueHolder>>valueChanged: in Block: [ :block | block cull: self value cull: oldValue ]...etc...
OrderedCollection>>do:
ObservableValueHolder>>valueChanged:
[ | oldValue |
	oldValue := value.
	value := anObject.
	self valueChanged: oldValue ] in ObservableValueHolder>>value: in Block: [ | oldValue |...
FullBlockClosure(BlockClosure)>>ensure:
ObservableValueHolder>>value:
SpTextPresenter(SpAbstractTextPresenter)>>text:
[
		self presenter text: aString.
		"Raise an announcement"
		self presenter changed: #clearUserEdits] in SpMorphicTextAdapter(SpMorphicBaseTextAdapter)>>accept:notifying: in Block: [...
FullBlockClosure(BlockClosure)>>ensure:
SpMorphicTextAdapter(SpMorphicBaseTextAdapter)>>accept:notifying:
SpMorphicTextAdapter>>accept:notifying:
SpRubScrolledTextMorph(RubScrolledTextMorph)>>acceptTextInModel
SpRubScrolledTextMorph(RubScrolledTextMorph)>>acceptContents
SpRubScrolledTextMorph(RubScrolledTextMorph)>>textChanged
RubTextScrollPane>>textChanged
RubEditingArea(RubAbstractTextArea)>>paragraphReplacedTextFrom:to:with:
[ 
			self composer emphasisHere: textArea emphasisHere.
			self composer replaceFrom: start to: stop with: aText.
			self text: self composer text.
			textArea paragraphWasComposedFrom: start to: stop.
			textArea paragraphReplacedTextFrom: start to: stop with: aText ] in RubParagraph>>replaceFrom:to:with: in Block: [ ...
FullBlockClosure(BlockClosure)>>ensure:
RubParagraph>>disableDrawingWhile:
RubParagraph>>replaceFrom:to:with:
RubCurrentLineBarDecorator(RubParagraphDecorator)>>replaceFrom:to:with:
[0m[31mFailed to find SDL2 library.
[0mSDL2 class(Object)>>error:
SDL2 class>>findSDL2
SDL2 class>>moduleName
SDL2 class>>ffiLibraryName
SDL2 class(Object)>>ffiLibrary
SDL2 class(Object)>>ffiCall:
SDL2 class>>setHint:value:
SDLWindowsPlatform>>initPlatformSpecific
SDL2 class>>initPlatformSpecific
SDL2 class>>initLibrary
SDL2 class>>initEverything
OSSDL2Driver>>initialize
OSSDL2Driver class(Behavior)>>new
OSWindowDriver class>>current
OSWorldRenderer>>pickMostSuitableWindowDriver
OSWorldRenderer>>doActivate
OSWorldRenderer(AbstractWorldRenderer)>>activate
WorldState>>worldRenderer:
MorphicUIManager>>activate
UIManager class>>default:
UIManagerSessionHandler>>startup:
[ :each | each startup: isImageStarting ] in WorkingSession>>runStartup: in Block: [ :each | each startup: isImageStarting ]
[aBlock value: each] in [ :each | 
		[aBlock value: each] 
			on: Exception
			do: [ :error | self errorHandler handleError: error] ] in WorkingSession>>runList:do: in Block: [aBlock value: each]
FullBlockClosure(BlockClosure)>>on:do:
[ :each | 
		[aBlock value: each] 
			on: Exception
			do: [ :error | self errorHandler handleError: error] ] in WorkingSession>>runList:do: in Block: [ :each | ...
Array(SequenceableCollection)>>do:
WorkingSession>>runList:do:
WorkingSession>>runStartup:
WorkingSession>>start:
SessionManager>>launchSnapshot:andQuit:
[0m[31mError: Failed to find SDL2 library.
[0mSDL2 class(Object)>>error:
SDL2 class>>findSDL2
SDL2 class>>moduleName
SDL2 class>>ffiLibraryName
SDL2 class(Object)>>ffiLibrary
SDL2 class(Object)>>ffiCall:
SDL2 class>>setHint:value:
SDLWindowsPlatform>>initPlatformSpecific
SDL2 class>>initPlatformSpecific
SDL2 class>>initLibrary
SDL2 class>>initEverything
OSSDL2Driver>>initialize
OSSDL2Driver class(Behavior)>>new
OSWindowDriver class>>current
OSWorldRenderer>>pickMostSuitableWindowDriver
OSWorldRenderer>>doActivate
OSWorldRenderer(AbstractWorldRenderer)>>activate
WorldState>>worldRenderer:
MorphicUIManager>>activate
UIManager class>>default:
UIManagerSessionHandler>>startup:
[ :each | each startup: isImageStarting ] in WorkingSession>>runStartup: in Block: [ :each | each startup: isImageStarting ]
[aBlock value: each] in [ :each | 
		[aBlock value: each] 
			on: Exception
			do: [ :error | self errorHandler handleError: error] ] in WorkingSession>>runList:do: in Block: [aBlock value: each]
FullBlockClosure(BlockClosure)>>on:do:
[ :each | 
		[aBlock value: each] 
			on: Exception
			do: [ :error | self errorHandler handleError: error] ] in WorkingSession>>runList:do: in Block: [ :each | ...
Array(SequenceableCollection)>>do:
WorkingSession>>runList:do:
WorkingSession>>runStartup:
WorkingSession>>start:
SessionManager>>launchSnapshot:andQuit:
[0m

jecisc avatar Apr 20 '22 15:04 jecisc

Thanks I hope it will help us.

Ducasse avatar Apr 20 '22 19:04 Ducasse

I finally got a problem on monterey and the guys here started to debug. Now I have the impression that the Windows problem is not the same than the mac one. The mac one is about not being able to pin an object while the windows one is a path problem to a library. I opened a bug on pharo-project for the first case: https://github.com/pharo-project/pharo/issues/11158

Ducasse avatar Apr 25 '22 19:04 Ducasse

The Windows problem is now fixed. See #554

demarey avatar Apr 26 '22 07:04 demarey

I finally got a problem on monterey and the guys here started to debug. Now I have the impression that the Windows problem is not the same than the mac one. The mac one is about not being able to pin an object while the windows one is a path problem to a library. I opened a bug on pharo-project for the first case: pharo-project/pharo#11158

Good that we have a way to reproduce this bug now. Thanks

demarey avatar Apr 26 '22 07:04 demarey

Hi graham

We finally understand the problem and it was vicious and we were lucky to be able to reproduce it :). We will issue a fix soon. This bug is present in Pharo 90 too. It is just a combination of several factors that makes us being able to reproduce it. In addition we could only reproduce it on my machine. Now could you grab a log of the launcher (may be launching the launcher from the command line) and send us the log so that we check whether this is the same bug?

Tx

Ducasse avatar May 04 '22 20:05 Ducasse

The Windows problem is now fixed. See #554

@demarey When will the new version of pharo-launcher be released? I've just downloaded brand new Pharo 10 from the site and got nothing because of that problem :)

Updated: sorry, my bad: after uninstalling Pharo Launcher and installing it again it works fine. It seems that installing the new version of launcher 3.0.1 above a previous version (for Pharo 9) preserves the problem #554. Previous version needs to be uninstalled first.

nartamonov avatar Jun 16 '22 21:06 nartamonov

I have a brand new mac m1 laptop. I installed the Pharo Launcher and tried to launch images which existed on my machine ( copied over from the pervious laptop). The images would fail to launch. After spending some time tracking it down it seems like a bash shell problem. The launcher was looking for /usr/local/bin/bash which doesn't exist on my laptop. The mac with Monterey on it ships with bash 3.2.57 in /bin/bash. Because the /usr/local/bin/bash didn't exist, it had a problem forking the process to start up the image.

halfmoongroup avatar Dec 23 '22 17:12 halfmoongroup

tx for the report.

Ducasse avatar Dec 24 '22 13:12 Ducasse

FYI. Sitting with Graham (original poster). Downloaded the latest Launcher. Copy to Applications. Run it, get bouncing icon for ages. Force kill and try again, bouncing icon for ages. Result is that it still won't run on his latest Macbook. M3 Macbook Pro (2024). Brand new.

riverdusty avatar May 10 '24 10:05 riverdusty