pharo-project / pharo-launcher

Lets you manage your pharo images and download new ones
https://pharo-project.github.io/pharo-launcher/
MIT License
108 stars 46 forks source link

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

Open GrahamMcLeod opened 2 years ago

GrahamMcLeod commented 2 years ago

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.

Ducasse commented 2 years ago

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

jecisc commented 2 years ago

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)

Ducasse commented 2 years ago

Thanks Cyril. We will investigate it.

jecisc commented 2 years ago

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


Process>>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:

Process>>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:
Failed to find SDL2 library.
SDL2 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:
Error: Failed to find SDL2 library.
SDL2 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:

Ducasse commented 2 years ago

Thanks I hope it will help us.

Ducasse commented 2 years ago

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

demarey commented 2 years ago

The Windows problem is now fixed. See #554

demarey commented 2 years ago

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

Ducasse commented 2 years ago

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

nartamonov commented 2 years ago

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.

halfmoongroup commented 1 year ago

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.

Ducasse commented 1 year ago

tx for the report.

riverdusty commented 1 month ago

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.