What's wrong with latest Pharo?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
25 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: What's wrong with latest Pharo?

Guillermo Polito
Hi Tim,

Looking at the resolution of the libgit library, I see that in pharo7 the following:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

That definition may be the root of the problem in linux because it is returning the unqualified library name without the VM path.
Then, the order of resolution of libraries is the one in the operating system, which is in your case probably searching in /usr/lib or something like that.
I'd bet that you have in your system (/usr/lib/something) another libgit version but probably not matching the expected version in pharo or the architecture of pharo (32/64 bits).
Thus, pharo finds the library but cannot load it...

If you check in Pharo8, the same method reads slightly different:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ (pluginDir / libName) fullName ].

self error: 'Module not found.'

Can you check that patching the method like that works in your case?
This maybe deserves a backporting as it may make it super complicated to work with Iceberg in some linuxes...

On Tue, Apr 30, 2019 at 3:08 PM Tim Mackinnon <[hidden email]> wrote:
Did we ever get the bottom of installing Pharo on linux? I have a user on Arch linux who installed pharo from AUR (this is new stuff to me) - and once they downloaded an image - they now get an error that looks suspiciously like this libgit2 debacle - so I’m wondering what the solution was?

The error is:

External module not found
ExternalLibraryFunction(Object)>>error:
ExternalLibraryFunction(Object)>>externalCallFailed
ExternalLibraryFunction(ExternalFunction)>>invokeWithArguments:
LGitLibrary>>libgit2_init
FFICalloutAPI>>function:module:
LGitLibrary(Object)>>ffiCall:
LGitLibrary>>libgit2_init
[ self libgit2_init.
self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....
BlockClosure>>on:do:

...

On 4 Apr 2019, at 15:07, Vitor Medina Cruz <[hidden email]> wrote:

No, you can't install libcurl3 with libcurl4. There is a known conflict between them: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900511

Ubuntu 18.4 don't come with curl, but I think it comes with libcurl3 (I don't have means to verify it now), but when you install curl, it installs libcurl4 and removes libcurl3.

On Thu, Apr 4, 2019 at 11:00 AM Richard O'Keefe <[hidden email]> wrote:
apt-cache search
reports everything it knows about, not just things that are INSTALLED.
For example, apt-cache search reports lua-curl-dev, but it is not
installed.
apt list | grep lua-curl-dev

The fact that neither libcurl3 nor libcurl4 is initially installed
means that either of them can be installed without conflict.

On Thu, 4 Apr 2019 at 01:34, Ben Coman <[hidden email]> wrote:

On Wed, 3 Apr 2019 at 05:09, Richard O'Keefe <[hidden email]> wrote:
I just did a complete reinstall of Ubuntu 18.4 on this
laptop yesterday,

 
and it did not come with any version of curl. 

What do you mean? Under WSL I have installed Ubuntu 18.4 and for...
    $ apt-cache search libcurl | less
I see libcurl3 and libcurl4

cheers -ben
 
uname -a =>
Linux Inspiron 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



On Wed, 3 Apr 2019 at 01:27, Vitor Medina Cruz <[hidden email]> wrote:
Installing curl don't work because there is a conflict between curl version name used on Ubuntu and that used by Pharo, you can't install libcurl 3 and libcru4 together. Ubuntu 18 comes with libcurl4 and older software depending on libcurl3 broke with it. I tested with minidebian and it also failed.

Richard, was you able to use Iceberg? It should only work if either Ubuntu fix this dependency problem with libcurl or Pharo started to use libcrl4.



On Tue, Apr 2, 2019 at 5:50 AM Richard O'Keefe <[hidden email]> wrote:
I have Pharo 6.1 and Pharo 7.0 working in Ubuntu 18.04
with no trouble so far.  I just downloaded the launcher
from pharo.org and pulled the images down that way.

One thing I do find annoying in Ubuntu 18.04 is the
number of programs (like okular) that spew warning
messages out the terminal.  Pharo, sadly, is one of
them.  Whenever a debugger window comes up in Pharo
there is spewage on the terminal.  But it works.


On Tue, 2 Apr 2019 at 13:07, john pfersich <[hidden email]> wrote:
Ubuntu 18.04 LTS is, IMHO, is royal piece of crap. Ubuntu seems to have abandoned programmers tools almost completely in 18.04. I’ve had more problems with support of programming tools in 18.04, more than even Windows. I have run ‘sudo apt install’ maybe 80 times to install tools and libraries. Ubuntu 18.04’s hardware support is also lame compared to 16.04.
Personally , I’m not surprised that Pharo doesn’t run on 18.04. I stopped installing 18.04 on my new machines, after all 16.04 still has a few years of support going for it, and at least it works without hours of upgrading.

/*—————————————————-*/
Sent from my iPhone
https://boincstats.com/signature/-1/user/51616339056/sig.png
See https://objectnets.net and https://objectnets.org

> On Apr 1, 2019, at 06:06, horrido <[hidden email]> wrote:
>
> This issue bit me in the ass before, but I forgot. Yes, I had a senior
> moment.
>
> The issue is this: When I tried to run Pharo under Ubuntu Server 18.04 at
> OVH last year, it failed. I had to fall back to Ubuntu Server 16.04.
>
> This week, I tried to run Pharo under Ubuntu Server 18.04 at Google Cloud
> Platform and it failed. Again, I had to fall back to Ubuntu Server 16.04.
>
> Why does this issue keep biting me in the ass??? Because I'm 65 and my brain
> is dying.
>
> The bigger issue is this: Hosting services like Digital Ocean, OVH, and
> Google Cloud Platform are becoming increasingly important in the enterprise
> space. If Pharo can't run on these server operating systems, it's going to
> be a black eye for the language. We can get away with not supporting this
> for now, but it will eventually catch up with us.
>
> At Google Cloud Platform, for example, the user can choose from this list of
> hosts: Debian GNU/Linux 9 (Stretch), CentOS 6, CentOS 7, various versions of
> CoreOS, Ubuntu 14.04 LTS Minimal, Ubuntu 16.04 LTS Minimal, Ubuntu 18.04 LTS
> Minimal, Ubuntu 18.10 Minimal, various versions of Red Hat, various versions
> of SUSE, various versions of Window, and so on. It's a long list. *I
> strongly suspect that many of these are unusable with Pharo.*
>
> How to address this? I don't know. But if it's not a major problem now, it
> will be. It's bitten me in the ass twice, and I can't be alone.
>
> I'm giving a fair warning to everyone. Don't lash back at me – I'm just the
> canary in the coal mine.
>
>
>
>
> Tim Mackinnon wrote
>> Come on, let’s try not to be dismissive , we’ve all had that annoying
>> moment where something doesn’t work.
>>
>> Richard, was this installed with zero conf or Launcher, and as mentioned -
>> a Linux distro is going to be helpful.
>>
>> I’m assuming it worked before at some point for you right? But was that v6
>> and now you’re trying v7?
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>>> On 31 Mar 2019, at 23:46, john pfersich &lt;
>
>> jpfersich@
>
>> &gt; wrote:
>>>
>>> What Linux (distro and version) and which version of Pharo. You couldn’t
>>> supply less information if you tried.
>>>
>>>
>>> /*—————————————————-*/
>>> Sent from my iPhone
>>> https://boincstats.com/signature/-1/user/51616339056/sig.png
>>> See https://objectnets.net and https://objectnets.org
>>>
>>>> On Mar 31, 2019, at 14:21, Richard Kenneth Eng &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>>
>>>> I just installed Pharo under Linux and when I start it up, I get:
>>>>
>>>> Error: External module not found
>>>>
>>>> It doesn't matter how I install Pharo.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>




--

   

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - http://www.cnrs.fr


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13

Reply | Threaded
Open this post in threaded view
|

Re: What's wrong with latest Pharo?

Tim Mackinnon
Hi Guille - I’m not using Arch Linux myself - this was a seasoned exercism contributor trying to give pharo a spin - and sadly it hasn’t gone well (shame as they might have been an advocate) They also commented:

"I'm not quite sure though if I really want to continue from here. As someone new to pharo, I basically can't find any installation instructions that go beyond that evil `curl`. I'm happy to play this to the end with you, that at least exercism gets proper instructions, but the pharo community really should change their mind and provide more and better documentation about systemwide installation and packages. I have a hard time seeing something used at my compnay that does not provide an RPM out of the box…”

Which is fair play.

However I did get some details which might salvage something (and maybe they can try)

Its ArchLinux (apparently there are no versions in Arch, its always the latest).
Pharo wa installed via AUR (looks like a bit old - 2019-01-24 18:18) - not sure that is the issue though
AUR does give an image so they downloaded the latest 64 bit one from here - https://files.pharo.org/image/70/
Libgit2 was missing - that was installed (not clear on how - could ask)

After all of this - it did launch - they saw a welcome screen then it crashed (I think they were doing our eval string to metacello load exercism - so it would then use libgit2)

They then got this error:

I’ve pasted the error below - for prosperity.

Tim

Pharo VM version: 5.0-201901231209  Wed Jan 23 12:32:13 UTC 2019 gcc 4.8 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
Revision: VM: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Jan 23 07:09:49 2019 CommitHash: a4b2dfa6 Plugins: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Build host: Linux travis-job-3a8f8935-e791-48da-aa41-2eccc2452870 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /opt/pharo/bin [default: /opt/pharo/lib/pharo/5.0-201901231209/]


C stack backtrace & registers:
	rax 0x00000000 rbx 0x7f4aacbce700 rcx 0x00000000 rdx 0x00000014
	rdi 0x00000000 rsi 0x00000000 rbp 0x00000000 rsp 0x7fffdc831d00
	r8  0x00000000 r9  0x7f4aacbbce22 r10 0x00000006 r11 0x7fffdc831d08
	r12 0x00000040 r13 0x00000014 r14 0x00000000 r15 0x7f4aacbbce22
	rip 0x7f4aac72f3b9
*/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41b0d3]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41cb2e]
/lib/libpthread.so.0(+0x124d0)[0x7f4aaeb2d4d0]
/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/lib/libcrypto.so.1.1(RSA_size+0xe)[0x7f4aac81fa5e]
/lib/libcrypto.so.1.1(+0x1b43b6)[0x7f4aac8273b6]
/lib/libcrypto.so.1.1(RSA_verify+0x2b)[0x7f4aac82777b]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x2c2df)[0x7f4aac4672df]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xabbf)[0x7f4aac445bbf]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xe377)[0x7f4aac449377]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xffbe)[0x7f4aac44afbe]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x11cb6)[0x7f4aac44ccb6]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x1ad00)[0x7f4aac455d00]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(libssh2_session_handshake+0x2e)[0x7f4aac455f8f]
/lib/libgit2.so(+0xc3265)[0x7f4aacb33265]
/lib/libgit2.so(+0xbf06b)[0x7f4aacb2f06b]
/lib/libgit2.so(git_remote_connect+0x166)[0x7f4aacb0bf66]
/lib/libgit2.so(git_remote_fetch+0x97)[0x7f4aacb0d417]
/lib/libgit2.so(git_clone+0x36a)[0x7f4aaca9c4ea]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4cacb6]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4585f7]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x45a667]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo(ceSendsupertonumArgs+0x265)[0x45c4b5]
[0x1f00100]
[0x7f4aacbcc7b0]


Smalltalk stack dump:
    0x7fffdc85b750 M LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b7d0 I FFICalloutAPI>function:module: 0x25189e8: a(n) FFICalloutAPI
    0x7fffdc85b820 I LGitRepository(LGitExternalObject)>callUnchecked:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b870 I LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b8e8 I [] in LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b928 I LGitRepository(LGitExternalObject)>withReturnHandlerDo: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b970 I LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b9c8 I LGitRepository>clone:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85ba10 M [] in IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc859530 M BlockClosure>on:do: 0x245dcf0: a(n) BlockClosure
    0x7fffdc859588 I IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc8595c8 I IceRepositoryCreator>cloneRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8595f8 M [] in IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc859628 M BlockClosure>on:do: 0x2425460: a(n) BlockClosure
    0x7fffdc859678 I IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8596b8 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8596e8 M BlockClosure>on:do: 0x2425350: a(n) BlockClosure
    0x7fffdc859748 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859788 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8597b8 M BlockClosure>on:do: 0x24251f0: a(n) BlockClosure
    0x7fffdc859810 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859860 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859890 M OrderedCollection(Collection)>detect:ifFound:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc8598d8 M OrderedCollection(Collection)>detect:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc859930 I MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859980 I IceGithubRepositoryType>mcRepository 0x2423178: a(n) IceGithubRepositoryType
    0x7fffdc8599c0 I Iceberg class>mcRepositoryFor: 0x4319310: a(n) Iceberg class
    0x7fffdc859a08 I IceMetacelloPharoPlatform>createRepository: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8575a8 I MetacelloMCBaselineProject(MetacelloMCProject)>createRepository: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc8575f8 I MetacelloRepositorySpec>createRepository 0x23f7550: a(n) MetacelloRepositorySpec
    0x7fffdc857630 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857660 M Array(Collection)>detect:ifFound:ifNone: 0x241ff70: a(n) Array
    0x7fffdc8576a8 M Array(Collection)>detect:ifNone: 0x241ff70: a(n) Array
    0x7fffdc857708 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857750 M Array(SequenceableCollection)>do: 0x23fd878: a(n) Array
    0x7fffdc8577a8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc8577f8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857860 I MetacelloPackageSpec>explicitLoadUsing: 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578a8 I MetacelloPackageSpec>load 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578e0 M [] in MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857910 M BlockClosure>on:do: 0x23f9850: a(n) BlockClosure
    0x7fffdc857968 I MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8579b8 I MetacelloScriptEngine>getBaselineProjectUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857a00 I MetacelloMCBaselineProject>projectForScriptEngine:unconditionalLoad: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853408 I MetacelloMCBaselineProject(MetacelloProject)>projectForScriptEngine: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853458 I MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>versionForScriptEngine: 0x23f8ed0: a(n) MetacelloMCBaselineOfProjectSpec
    0x7fffdc8534b8 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8534e8 M BlockClosure>on:do: 0x23f7e58: a(n) BlockClosure
    0x7fffdc853530 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853560 M BlockClosure>on:do: 0x23f8148: a(n) BlockClosure
    0x7fffdc8535a8 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8535d8 M BlockClosure>on:do: 0x23f8048: a(n) BlockClosure
    0x7fffdc853620 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853650 M BlockClosure>on:do: 0x23f7f48: a(n) BlockClosure
    0x7fffdc8536a0 I MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8536f0 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853730 M BlockClosure>ensure: 0x23f7970: a(n) BlockClosure
    0x7fffdc853788 I MetacelloProjectRegistration class>copyRegistryRestoreOnErrorWhile: 0x2e68c50: a(n) MetacelloProjectRegistration class
    0x7fffdc8537d0 I MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853818 M MetacelloScriptEngine>load: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853860 M [] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538a0 M [] in MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538e8 M Array(SequenceableCollection)>do: 0x23f73c0: a(n) Array
    0x7fffdc853930 I MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853980 I ByteString(String)>execute:against: 0x23d3510: a(n) ByteString
    0x7fffdc8539d0 I MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853a10 M [] in MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855368 M [] in IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc8553a8 M BlockClosure>ensure: 0x23f6bf8: a(n) BlockClosure
    0x7fffdc855400 I IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc855450 I IceMetacelloLoadSessionContext class(DynamicVariable class)>value:during: 0x433ce98: a(n) IceMetacelloLoadSessionContext class
    0x7fffdc8554a8 I IceMetacelloPharoPlatform>withMetacelloLoadSessionDo: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8554f0 I MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855540 I Metacello>execute:args: 0x23f6660: a(n) Metacello
    0x7fffdc855590 I Metacello>load 0x23f6660: a(n) Metacello
    0x7fffdc8555c0 M UndefinedObject>DoIt 0x28e78e0: a(n) UndefinedObject
    0x7fffdc855608 I OpalCompiler>evaluate 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855648 I OpalCompiler>evaluate: 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855690 M [] in EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8556c0 M BlockClosure>on:do: 0x23d1290: a(n) BlockClosure
    0x7fffdc855718 I EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc855768 I EvaluateCommandLineHandler>evaluateArguments 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557a8 I EvaluateCommandLineHandler>activate 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557e8 I EvaluateCommandLineHandler class(CommandLineHandler class)>activateWith: 0x2a271e0: a(n) EvaluateCommandLineHandler class
    0x7fffdc855828 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855858 M BlockClosure>on:do: 0x23cd300: a(n) BlockClosure
    0x7fffdc855898 M PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc8558e8 I PharoCommandLineHandler(BasicCommandLineHandler)>handleSubcommand 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855928 I PharoCommandLineHandler(BasicCommandLineHandler)>handleArgument: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855960 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855990 M BlockClosure>on:do: 0x23c9fb8: a(n) BlockClosure
    0x7fffdc8559d0 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855a10 I [] in BlockClosure>newProcess 0x23c97a0: a(n) BlockClosure

Most recent primitives
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
lookupDirectory:filename:
class
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
perform:
stringHash:initialHash:
compare:with:collated:
perform:
class
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
at:
basicNew:
replaceFrom:to:with:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
basicNew
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
**StackOverflow**
stringHash:initialHash:
isOctetString
basicNew:
**StackOverflow**
stringHash:initialHash:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
class
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
basicNew
basicNew
basicNew
basicNew
shallowCopy
stringHash:initialHash:
basicNew
basicNew
class
basicNew
basicIdentityHash
basicNew
basicNew
**StackOverflow**
basicNew
stringHash:initialHash:
**StackOverflow**
parameterAt:
stringHash:initialHash:
setIsReadOnlyObject:
basicIdentityHash
stringHash:initialHash:
class
=
class
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
size
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
class
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
class
stringHash:initialHash:
hash
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
basicNew
class
stringHash:initialHash:
compare:with:collated:
perform:
newMethod:header:
at:put:
at:put:
at:put:
at:put:
basicNew
size
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
basicIdentityHash
objectAt:put:
stringHash:initialHash:
stringHash:initialHash:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicAt:
at:put:
flushCache
basicIdentityHash
basicIdentityHash
at:
new:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
withArgs:executeMethod:
instVarAt:
size
allocate:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
class
clone
basicIdentityHash
at:
wait
**StackOverflow**
basicNew:
basicNew:
signal
invokeWithArguments:

stack page bytes 8192 available headroom 5576 minimum unused headroom 5936

	(Segmentation fault)


On 30 Apr 2019, at 15:18, Guillermo Polito <[hidden email]> wrote:

Hi Tim,

Looking at the resolution of the libgit library, I see that in pharo7 the following:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

That definition may be the root of the problem in linux because it is returning the unqualified library name without the VM path.
Then, the order of resolution of libraries is the one in the operating system, which is in your case probably searching in /usr/lib or something like that.
I'd bet that you have in your system (/usr/lib/something) another libgit version but probably not matching the expected version in pharo or the architecture of pharo (32/64 bits).
Thus, pharo finds the library but cannot load it...

If you check in Pharo8, the same method reads slightly different:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ (pluginDir / libName) fullName ].

self error: 'Module not found.'

Can you check that patching the method like that works in your case?
This maybe deserves a backporting as it may make it super complicated to work with Iceberg in some linuxes...

On Tue, Apr 30, 2019 at 3:08 PM Tim Mackinnon <[hidden email]> wrote:
Did we ever get the bottom of installing Pharo on linux? I have a user on Arch linux who installed pharo from AUR (this is new stuff to me) - and once they downloaded an image - they now get an error that looks suspiciously like this libgit2 debacle - so I’m wondering what the solution was?

The error is:

External module not found
ExternalLibraryFunction(Object)>>error:
ExternalLibraryFunction(Object)>>externalCallFailed
ExternalLibraryFunction(ExternalFunction)>>invokeWithArguments:
LGitLibrary>>libgit2_init
FFICalloutAPI>>function:module:
LGitLibrary(Object)>>ffiCall:
LGitLibrary>>libgit2_init
[ self libgit2_init.
self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....
BlockClosure>>on:do:

...

On 4 Apr 2019, at 15:07, Vitor Medina Cruz <[hidden email]> wrote:

No, you can't install libcurl3 with libcurl4. There is a known conflict between them: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900511

Ubuntu 18.4 don't come with curl, but I think it comes with libcurl3 (I don't have means to verify it now), but when you install curl, it installs libcurl4 and removes libcurl3.

On Thu, Apr 4, 2019 at 11:00 AM Richard O'Keefe <[hidden email]> wrote:
apt-cache search
reports everything it knows about, not just things that are INSTALLED.
For example, apt-cache search reports lua-curl-dev, but it is not
installed.
apt list | grep lua-curl-dev

The fact that neither libcurl3 nor libcurl4 is initially installed
means that either of them can be installed without conflict.

On Thu, 4 Apr 2019 at 01:34, Ben Coman <[hidden email]> wrote:

On Wed, 3 Apr 2019 at 05:09, Richard O'Keefe <[hidden email]> wrote:
I just did a complete reinstall of Ubuntu 18.4 on this
laptop yesterday,

 
and it did not come with any version of curl. 

What do you mean? Under WSL I have installed Ubuntu 18.4 and for...
    $ apt-cache search libcurl | less
I see libcurl3 and libcurl4

cheers -ben
 
uname -a =>
Linux Inspiron 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



On Wed, 3 Apr 2019 at 01:27, Vitor Medina Cruz <[hidden email]> wrote:
Installing curl don't work because there is a conflict between curl version name used on Ubuntu and that used by Pharo, you can't install libcurl 3 and libcru4 together. Ubuntu 18 comes with libcurl4 and older software depending on libcurl3 broke with it. I tested with minidebian and it also failed.

Richard, was you able to use Iceberg? It should only work if either Ubuntu fix this dependency problem with libcurl or Pharo started to use libcrl4.



On Tue, Apr 2, 2019 at 5:50 AM Richard O'Keefe <[hidden email]> wrote:
I have Pharo 6.1 and Pharo 7.0 working in Ubuntu 18.04
with no trouble so far.  I just downloaded the launcher
from pharo.org and pulled the images down that way.

One thing I do find annoying in Ubuntu 18.04 is the
number of programs (like okular) that spew warning
messages out the terminal.  Pharo, sadly, is one of
them.  Whenever a debugger window comes up in Pharo
there is spewage on the terminal.  But it works.


On Tue, 2 Apr 2019 at 13:07, john pfersich <[hidden email]> wrote:
Ubuntu 18.04 LTS is, IMHO, is royal piece of crap. Ubuntu seems to have abandoned programmers tools almost completely in 18.04. I’ve had more problems with support of programming tools in 18.04, more than even Windows. I have run ‘sudo apt install’ maybe 80 times to install tools and libraries. Ubuntu 18.04’s hardware support is also lame compared to 16.04.
Personally , I’m not surprised that Pharo doesn’t run on 18.04. I stopped installing 18.04 on my new machines, after all 16.04 still has a few years of support going for it, and at least it works without hours of upgrading.

/*—————————————————-*/
Sent from my iPhone
https://boincstats.com/signature/-1/user/51616339056/sig.png
See https://objectnets.net and https://objectnets.org

> On Apr 1, 2019, at 06:06, horrido <[hidden email]> wrote:
>
> This issue bit me in the ass before, but I forgot. Yes, I had a senior
> moment.
>
> The issue is this: When I tried to run Pharo under Ubuntu Server 18.04 at
> OVH last year, it failed. I had to fall back to Ubuntu Server 16.04.
>
> This week, I tried to run Pharo under Ubuntu Server 18.04 at Google Cloud
> Platform and it failed. Again, I had to fall back to Ubuntu Server 16.04.
>
> Why does this issue keep biting me in the ass??? Because I'm 65 and my brain
> is dying.
>
> The bigger issue is this: Hosting services like Digital Ocean, OVH, and
> Google Cloud Platform are becoming increasingly important in the enterprise
> space. If Pharo can't run on these server operating systems, it's going to
> be a black eye for the language. We can get away with not supporting this
> for now, but it will eventually catch up with us.
>
> At Google Cloud Platform, for example, the user can choose from this list of
> hosts: Debian GNU/Linux 9 (Stretch), CentOS 6, CentOS 7, various versions of
> CoreOS, Ubuntu 14.04 LTS Minimal, Ubuntu 16.04 LTS Minimal, Ubuntu 18.04 LTS
> Minimal, Ubuntu 18.10 Minimal, various versions of Red Hat, various versions
> of SUSE, various versions of Window, and so on. It's a long list. *I
> strongly suspect that many of these are unusable with Pharo.*
>
> How to address this? I don't know. But if it's not a major problem now, it
> will be. It's bitten me in the ass twice, and I can't be alone.
>
> I'm giving a fair warning to everyone. Don't lash back at me – I'm just the
> canary in the coal mine.
>
>
>
>
> Tim Mackinnon wrote
>> Come on, let’s try not to be dismissive , we’ve all had that annoying
>> moment where something doesn’t work.
>>
>> Richard, was this installed with zero conf or Launcher, and as mentioned -
>> a Linux distro is going to be helpful.
>>
>> I’m assuming it worked before at some point for you right? But was that v6
>> and now you’re trying v7?
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>>> On 31 Mar 2019, at 23:46, john pfersich &lt;
>
>> jpfersich@
>
>> &gt; wrote:
>>>
>>> What Linux (distro and version) and which version of Pharo. You couldn’t
>>> supply less information if you tried.
>>>
>>>
>>> /*—————————————————-*/
>>> Sent from my iPhone
>>> https://boincstats.com/signature/-1/user/51616339056/sig.png
>>> See https://objectnets.net and https://objectnets.org
>>>
>>>> On Mar 31, 2019, at 14:21, Richard Kenneth Eng &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>>
>>>> I just installed Pharo under Linux and when I start it up, I get:
>>>>
>>>> Error: External module not found
>>>>
>>>> It doesn't matter how I install Pharo.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>




--
   
Guille Polito
Research Engineer


Centre de Recherche en Informatique, Signal et Automatique de Lille
CRIStAL - UMR 9189
French National Center for Scientific Research - http://www.cnrs.fr

Phone: +33 06 52 70 66 13

Reply | Threaded
Open this post in threaded view
|

Re: What's wrong with latest Pharo?

Tim Mackinnon
Actually - the user has confirmed a bit more (which sounds like your hunch Guille):

Hmm… Just loading the image without `eval`ing something seems to boot up well. But then I also realise, that there is a warning:

```ioLoadModule(/opt/pharo/bin/../lib/pharo/5.0-201901231209/libgit2.so):
  libcurl-gnutls.so.4: cannot open shared object file: No such file or directory```
(edited)

So this looks like pharo tries to load a bundled libgit2 first during bootup which fails and only later, when trying to call into it, system resolves into the system installed one.
Which then causes the segfault for some reason.

I’ll see if I can guide him through changing that method.

Tim

On 30 Apr 2019, at 15:53, Tim Mackinnon <[hidden email]> wrote:

Hi Guille - I’m not using Arch Linux myself - this was a seasoned exercism contributor trying to give pharo a spin - and sadly it hasn’t gone well (shame as they might have been an advocate) They also commented:

"I'm not quite sure though if I really want to continue from here. As someone new to pharo, I basically can't find any installation instructions that go beyond that evil `curl`. I'm happy to play this to the end with you, that at least exercism gets proper instructions, but the pharo community really should change their mind and provide more and better documentation about systemwide installation and packages. I have a hard time seeing something used at my compnay that does not provide an RPM out of the box…”

Which is fair play.

However I did get some details which might salvage something (and maybe they can try)

Its ArchLinux (apparently there are no versions in Arch, its always the latest).
Pharo wa installed via AUR (looks like a bit old - 2019-01-24 18:18) - not sure that is the issue though
AUR does give an image so they downloaded the latest 64 bit one from here - https://files.pharo.org/image/70/
Libgit2 was missing - that was installed (not clear on how - could ask)

After all of this - it did launch - they saw a welcome screen then it crashed (I think they were doing our eval string to metacello load exercism - so it would then use libgit2)

They then got this error:

I’ve pasted the error below - for prosperity.

Tim

Pharo VM version: 5.0-201901231209  Wed Jan 23 12:32:13 UTC 2019 gcc 4.8 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
Revision: VM: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Jan 23 07:09:49 2019 CommitHash: a4b2dfa6 Plugins: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Build host: Linux travis-job-3a8f8935-e791-48da-aa41-2eccc2452870 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /opt/pharo/bin [default: /opt/pharo/lib/pharo/5.0-201901231209/]


C stack backtrace & registers:
	rax 0x00000000 rbx 0x7f4aacbce700 rcx 0x00000000 rdx 0x00000014
	rdi 0x00000000 rsi 0x00000000 rbp 0x00000000 rsp 0x7fffdc831d00
	r8  0x00000000 r9  0x7f4aacbbce22 r10 0x00000006 r11 0x7fffdc831d08
	r12 0x00000040 r13 0x00000014 r14 0x00000000 r15 0x7f4aacbbce22
	rip 0x7f4aac72f3b9
*/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41b0d3]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41cb2e]
/lib/libpthread.so.0(+0x124d0)[0x7f4aaeb2d4d0]
/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/lib/libcrypto.so.1.1(RSA_size+0xe)[0x7f4aac81fa5e]
/lib/libcrypto.so.1.1(+0x1b43b6)[0x7f4aac8273b6]
/lib/libcrypto.so.1.1(RSA_verify+0x2b)[0x7f4aac82777b]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x2c2df)[0x7f4aac4672df]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xabbf)[0x7f4aac445bbf]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xe377)[0x7f4aac449377]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xffbe)[0x7f4aac44afbe]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x11cb6)[0x7f4aac44ccb6]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x1ad00)[0x7f4aac455d00]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(libssh2_session_handshake+0x2e)[0x7f4aac455f8f]
/lib/libgit2.so(+0xc3265)[0x7f4aacb33265]
/lib/libgit2.so(+0xbf06b)[0x7f4aacb2f06b]
/lib/libgit2.so(git_remote_connect+0x166)[0x7f4aacb0bf66]
/lib/libgit2.so(git_remote_fetch+0x97)[0x7f4aacb0d417]
/lib/libgit2.so(git_clone+0x36a)[0x7f4aaca9c4ea]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4cacb6]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4585f7]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x45a667]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo(ceSendsupertonumArgs+0x265)[0x45c4b5]
[0x1f00100]
[0x7f4aacbcc7b0]


Smalltalk stack dump:
    0x7fffdc85b750 M LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b7d0 I FFICalloutAPI>function:module: 0x25189e8: a(n) FFICalloutAPI
    0x7fffdc85b820 I LGitRepository(LGitExternalObject)>callUnchecked:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b870 I LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b8e8 I [] in LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b928 I LGitRepository(LGitExternalObject)>withReturnHandlerDo: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b970 I LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b9c8 I LGitRepository>clone:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85ba10 M [] in IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc859530 M BlockClosure>on:do: 0x245dcf0: a(n) BlockClosure
    0x7fffdc859588 I IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc8595c8 I IceRepositoryCreator>cloneRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8595f8 M [] in IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc859628 M BlockClosure>on:do: 0x2425460: a(n) BlockClosure
    0x7fffdc859678 I IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8596b8 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8596e8 M BlockClosure>on:do: 0x2425350: a(n) BlockClosure
    0x7fffdc859748 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859788 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8597b8 M BlockClosure>on:do: 0x24251f0: a(n) BlockClosure
    0x7fffdc859810 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859860 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859890 M OrderedCollection(Collection)>detect:ifFound:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc8598d8 M OrderedCollection(Collection)>detect:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc859930 I MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859980 I IceGithubRepositoryType>mcRepository 0x2423178: a(n) IceGithubRepositoryType
    0x7fffdc8599c0 I Iceberg class>mcRepositoryFor: 0x4319310: a(n) Iceberg class
    0x7fffdc859a08 I IceMetacelloPharoPlatform>createRepository: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8575a8 I MetacelloMCBaselineProject(MetacelloMCProject)>createRepository: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc8575f8 I MetacelloRepositorySpec>createRepository 0x23f7550: a(n) MetacelloRepositorySpec
    0x7fffdc857630 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857660 M Array(Collection)>detect:ifFound:ifNone: 0x241ff70: a(n) Array
    0x7fffdc8576a8 M Array(Collection)>detect:ifNone: 0x241ff70: a(n) Array
    0x7fffdc857708 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857750 M Array(SequenceableCollection)>do: 0x23fd878: a(n) Array
    0x7fffdc8577a8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc8577f8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857860 I MetacelloPackageSpec>explicitLoadUsing: 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578a8 I MetacelloPackageSpec>load 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578e0 M [] in MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857910 M BlockClosure>on:do: 0x23f9850: a(n) BlockClosure
    0x7fffdc857968 I MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8579b8 I MetacelloScriptEngine>getBaselineProjectUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857a00 I MetacelloMCBaselineProject>projectForScriptEngine:unconditionalLoad: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853408 I MetacelloMCBaselineProject(MetacelloProject)>projectForScriptEngine: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853458 I MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>versionForScriptEngine: 0x23f8ed0: a(n) MetacelloMCBaselineOfProjectSpec
    0x7fffdc8534b8 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8534e8 M BlockClosure>on:do: 0x23f7e58: a(n) BlockClosure
    0x7fffdc853530 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853560 M BlockClosure>on:do: 0x23f8148: a(n) BlockClosure
    0x7fffdc8535a8 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8535d8 M BlockClosure>on:do: 0x23f8048: a(n) BlockClosure
    0x7fffdc853620 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853650 M BlockClosure>on:do: 0x23f7f48: a(n) BlockClosure
    0x7fffdc8536a0 I MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8536f0 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853730 M BlockClosure>ensure: 0x23f7970: a(n) BlockClosure
    0x7fffdc853788 I MetacelloProjectRegistration class>copyRegistryRestoreOnErrorWhile: 0x2e68c50: a(n) MetacelloProjectRegistration class
    0x7fffdc8537d0 I MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853818 M MetacelloScriptEngine>load: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853860 M [] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538a0 M [] in MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538e8 M Array(SequenceableCollection)>do: 0x23f73c0: a(n) Array
    0x7fffdc853930 I MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853980 I ByteString(String)>execute:against: 0x23d3510: a(n) ByteString
    0x7fffdc8539d0 I MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853a10 M [] in MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855368 M [] in IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc8553a8 M BlockClosure>ensure: 0x23f6bf8: a(n) BlockClosure
    0x7fffdc855400 I IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc855450 I IceMetacelloLoadSessionContext class(DynamicVariable class)>value:during: 0x433ce98: a(n) IceMetacelloLoadSessionContext class
    0x7fffdc8554a8 I IceMetacelloPharoPlatform>withMetacelloLoadSessionDo: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8554f0 I MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855540 I Metacello>execute:args: 0x23f6660: a(n) Metacello
    0x7fffdc855590 I Metacello>load 0x23f6660: a(n) Metacello
    0x7fffdc8555c0 M UndefinedObject>DoIt 0x28e78e0: a(n) UndefinedObject
    0x7fffdc855608 I OpalCompiler>evaluate 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855648 I OpalCompiler>evaluate: 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855690 M [] in EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8556c0 M BlockClosure>on:do: 0x23d1290: a(n) BlockClosure
    0x7fffdc855718 I EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc855768 I EvaluateCommandLineHandler>evaluateArguments 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557a8 I EvaluateCommandLineHandler>activate 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557e8 I EvaluateCommandLineHandler class(CommandLineHandler class)>activateWith: 0x2a271e0: a(n) EvaluateCommandLineHandler class
    0x7fffdc855828 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855858 M BlockClosure>on:do: 0x23cd300: a(n) BlockClosure
    0x7fffdc855898 M PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc8558e8 I PharoCommandLineHandler(BasicCommandLineHandler)>handleSubcommand 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855928 I PharoCommandLineHandler(BasicCommandLineHandler)>handleArgument: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855960 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855990 M BlockClosure>on:do: 0x23c9fb8: a(n) BlockClosure
    0x7fffdc8559d0 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855a10 I [] in BlockClosure>newProcess 0x23c97a0: a(n) BlockClosure

Most recent primitives
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
lookupDirectory:filename:
class
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
perform:
stringHash:initialHash:
compare:with:collated:
perform:
class
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
at:
basicNew:
replaceFrom:to:with:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
basicNew
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
**StackOverflow**
stringHash:initialHash:
isOctetString
basicNew:
**StackOverflow**
stringHash:initialHash:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
class
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
basicNew
basicNew
basicNew
basicNew
shallowCopy
stringHash:initialHash:
basicNew
basicNew
class
basicNew
basicIdentityHash
basicNew
basicNew
**StackOverflow**
basicNew
stringHash:initialHash:
**StackOverflow**
parameterAt:
stringHash:initialHash:
setIsReadOnlyObject:
basicIdentityHash
stringHash:initialHash:
class
=
class
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
size
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
class
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
class
stringHash:initialHash:
hash
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
basicNew
class
stringHash:initialHash:
compare:with:collated:
perform:
newMethod:header:
at:put:
at:put:
at:put:
at:put:
basicNew
size
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
basicIdentityHash
objectAt:put:
stringHash:initialHash:
stringHash:initialHash:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicAt:
at:put:
flushCache
basicIdentityHash
basicIdentityHash
at:
new:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
withArgs:executeMethod:
instVarAt:
size
allocate:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
class
clone
basicIdentityHash
at:
wait
**StackOverflow**
basicNew:
basicNew:
signal
invokeWithArguments:

stack page bytes 8192 available headroom 5576 minimum unused headroom 5936

	(Segmentation fault)


On 30 Apr 2019, at 15:18, Guillermo Polito <[hidden email]> wrote:

Hi Tim,

Looking at the resolution of the libgit library, I see that in pharo7 the following:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

That definition may be the root of the problem in linux because it is returning the unqualified library name without the VM path.
Then, the order of resolution of libraries is the one in the operating system, which is in your case probably searching in /usr/lib or something like that.
I'd bet that you have in your system (/usr/lib/something) another libgit version but probably not matching the expected version in pharo or the architecture of pharo (32/64 bits).
Thus, pharo finds the library but cannot load it...

If you check in Pharo8, the same method reads slightly different:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ (pluginDir / libName) fullName ].

self error: 'Module not found.'

Can you check that patching the method like that works in your case?
This maybe deserves a backporting as it may make it super complicated to work with Iceberg in some linuxes...

On Tue, Apr 30, 2019 at 3:08 PM Tim Mackinnon <[hidden email]> wrote:
Did we ever get the bottom of installing Pharo on linux? I have a user on Arch linux who installed pharo from AUR (this is new stuff to me) - and once they downloaded an image - they now get an error that looks suspiciously like this libgit2 debacle - so I’m wondering what the solution was?

The error is:

External module not found
ExternalLibraryFunction(Object)>>error:
ExternalLibraryFunction(Object)>>externalCallFailed
ExternalLibraryFunction(ExternalFunction)>>invokeWithArguments:
LGitLibrary>>libgit2_init
FFICalloutAPI>>function:module:
LGitLibrary(Object)>>ffiCall:
LGitLibrary>>libgit2_init
[ self libgit2_init.
self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....
BlockClosure>>on:do:

...

On 4 Apr 2019, at 15:07, Vitor Medina Cruz <[hidden email]> wrote:

No, you can't install libcurl3 with libcurl4. There is a known conflict between them: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900511

Ubuntu 18.4 don't come with curl, but I think it comes with libcurl3 (I don't have means to verify it now), but when you install curl, it installs libcurl4 and removes libcurl3.

On Thu, Apr 4, 2019 at 11:00 AM Richard O'Keefe <[hidden email]> wrote:
apt-cache search
reports everything it knows about, not just things that are INSTALLED.
For example, apt-cache search reports lua-curl-dev, but it is not
installed.
apt list | grep lua-curl-dev

The fact that neither libcurl3 nor libcurl4 is initially installed
means that either of them can be installed without conflict.

On Thu, 4 Apr 2019 at 01:34, Ben Coman <[hidden email]> wrote:

On Wed, 3 Apr 2019 at 05:09, Richard O'Keefe <[hidden email]> wrote:
I just did a complete reinstall of Ubuntu 18.4 on this
laptop yesterday,

 
and it did not come with any version of curl. 

What do you mean? Under WSL I have installed Ubuntu 18.4 and for...
    $ apt-cache search libcurl | less
I see libcurl3 and libcurl4

cheers -ben
 
uname -a =>
Linux Inspiron 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



On Wed, 3 Apr 2019 at 01:27, Vitor Medina Cruz <[hidden email]> wrote:
Installing curl don't work because there is a conflict between curl version name used on Ubuntu and that used by Pharo, you can't install libcurl 3 and libcru4 together. Ubuntu 18 comes with libcurl4 and older software depending on libcurl3 broke with it. I tested with minidebian and it also failed.

Richard, was you able to use Iceberg? It should only work if either Ubuntu fix this dependency problem with libcurl or Pharo started to use libcrl4.



On Tue, Apr 2, 2019 at 5:50 AM Richard O'Keefe <[hidden email]> wrote:
I have Pharo 6.1 and Pharo 7.0 working in Ubuntu 18.04
with no trouble so far.  I just downloaded the launcher
from pharo.org and pulled the images down that way.

One thing I do find annoying in Ubuntu 18.04 is the
number of programs (like okular) that spew warning
messages out the terminal.  Pharo, sadly, is one of
them.  Whenever a debugger window comes up in Pharo
there is spewage on the terminal.  But it works.


On Tue, 2 Apr 2019 at 13:07, john pfersich <[hidden email]> wrote:
Ubuntu 18.04 LTS is, IMHO, is royal piece of crap. Ubuntu seems to have abandoned programmers tools almost completely in 18.04. I’ve had more problems with support of programming tools in 18.04, more than even Windows. I have run ‘sudo apt install’ maybe 80 times to install tools and libraries. Ubuntu 18.04’s hardware support is also lame compared to 16.04.
Personally , I’m not surprised that Pharo doesn’t run on 18.04. I stopped installing 18.04 on my new machines, after all 16.04 still has a few years of support going for it, and at least it works without hours of upgrading.

/*—————————————————-*/
Sent from my iPhone
https://boincstats.com/signature/-1/user/51616339056/sig.png
See https://objectnets.net and https://objectnets.org

> On Apr 1, 2019, at 06:06, horrido <[hidden email]> wrote:
>
> This issue bit me in the ass before, but I forgot. Yes, I had a senior
> moment.
>
> The issue is this: When I tried to run Pharo under Ubuntu Server 18.04 at
> OVH last year, it failed. I had to fall back to Ubuntu Server 16.04.
>
> This week, I tried to run Pharo under Ubuntu Server 18.04 at Google Cloud
> Platform and it failed. Again, I had to fall back to Ubuntu Server 16.04.
>
> Why does this issue keep biting me in the ass??? Because I'm 65 and my brain
> is dying.
>
> The bigger issue is this: Hosting services like Digital Ocean, OVH, and
> Google Cloud Platform are becoming increasingly important in the enterprise
> space. If Pharo can't run on these server operating systems, it's going to
> be a black eye for the language. We can get away with not supporting this
> for now, but it will eventually catch up with us.
>
> At Google Cloud Platform, for example, the user can choose from this list of
> hosts: Debian GNU/Linux 9 (Stretch), CentOS 6, CentOS 7, various versions of
> CoreOS, Ubuntu 14.04 LTS Minimal, Ubuntu 16.04 LTS Minimal, Ubuntu 18.04 LTS
> Minimal, Ubuntu 18.10 Minimal, various versions of Red Hat, various versions
> of SUSE, various versions of Window, and so on. It's a long list. *I
> strongly suspect that many of these are unusable with Pharo.*
>
> How to address this? I don't know. But if it's not a major problem now, it
> will be. It's bitten me in the ass twice, and I can't be alone.
>
> I'm giving a fair warning to everyone. Don't lash back at me – I'm just the
> canary in the coal mine.
>
>
>
>
> Tim Mackinnon wrote
>> Come on, let’s try not to be dismissive , we’ve all had that annoying
>> moment where something doesn’t work.
>>
>> Richard, was this installed with zero conf or Launcher, and as mentioned -
>> a Linux distro is going to be helpful.
>>
>> I’m assuming it worked before at some point for you right? But was that v6
>> and now you’re trying v7?
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>>> On 31 Mar 2019, at 23:46, john pfersich &lt;
>
>> jpfersich@
>
>> &gt; wrote:
>>>
>>> What Linux (distro and version) and which version of Pharo. You couldn’t
>>> supply less information if you tried.
>>>
>>>
>>> /*—————————————————-*/
>>> Sent from my iPhone
>>> https://boincstats.com/signature/-1/user/51616339056/sig.png
>>> See https://objectnets.net and https://objectnets.org
>>>
>>>> On Mar 31, 2019, at 14:21, Richard Kenneth Eng &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>>
>>>> I just installed Pharo under Linux and when I start it up, I get:
>>>>
>>>> Error: External module not found
>>>>
>>>> It doesn't matter how I install Pharo.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>




--
   
Guille Polito
Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille
CRIStAL - UMR 9189
French National Center for Scientific Research - http://www.cnrs.fr

Phone: +33 06 52 70 66 13


Reply | Threaded
Open this post in threaded view
|

Re: What's wrong with latest Pharo?

Tim Mackinnon
Guille - it looks like modifying that method and :
"I installed some other package (`libcurl-gnutls`) which is an "addon" to the regular `libcurl`.”

Got us further - now he’s getting IceAuthenticationError- which could be down to git vs https. (I can use the #remoteTypeSelector: trick to hopefully fix that).

When I confirm everything, I will report back the magic syntax (at least for Arch) - as well as the desire to back port that fix to 7.

Thanks for chipping in (and this is the thread that keeps on giving…)

Tim

On 30 Apr 2019, at 16:08, Tim Mackinnon <[hidden email]> wrote:

Actually - the user has confirmed a bit more (which sounds like your hunch Guille):

Hmm… Just loading the image without `eval`ing something seems to boot up well. But then I also realise, that there is a warning:

```ioLoadModule(/opt/pharo/bin/../lib/pharo/5.0-201901231209/libgit2.so):
  libcurl-gnutls.so.4: cannot open shared object file: No such file or directory```
(edited)

So this looks like pharo tries to load a bundled libgit2 first during bootup which fails and only later, when trying to call into it, system resolves into the system installed one.
Which then causes the segfault for some reason.

I’ll see if I can guide him through changing that method.

Tim

On 30 Apr 2019, at 15:53, Tim Mackinnon <[hidden email]> wrote:

Hi Guille - I’m not using Arch Linux myself - this was a seasoned exercism contributor trying to give pharo a spin - and sadly it hasn’t gone well (shame as they might have been an advocate) They also commented:

"I'm not quite sure though if I really want to continue from here. As someone new to pharo, I basically can't find any installation instructions that go beyond that evil `curl`. I'm happy to play this to the end with you, that at least exercism gets proper instructions, but the pharo community really should change their mind and provide more and better documentation about systemwide installation and packages. I have a hard time seeing something used at my compnay that does not provide an RPM out of the box…”

Which is fair play.

However I did get some details which might salvage something (and maybe they can try)

Its ArchLinux (apparently there are no versions in Arch, its always the latest).
Pharo wa installed via AUR (looks like a bit old - 2019-01-24 18:18) - not sure that is the issue though
AUR does give an image so they downloaded the latest 64 bit one from here - https://files.pharo.org/image/70/
Libgit2 was missing - that was installed (not clear on how - could ask)

After all of this - it did launch - they saw a welcome screen then it crashed (I think they were doing our eval string to metacello load exercism - so it would then use libgit2)

They then got this error:

I’ve pasted the error below - for prosperity.

Tim

Pharo VM version: 5.0-201901231209  Wed Jan 23 12:32:13 UTC 2019 gcc 4.8 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
Revision: VM: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Jan 23 07:09:49 2019 CommitHash: a4b2dfa6 Plugins: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Build host: Linux travis-job-3a8f8935-e791-48da-aa41-2eccc2452870 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /opt/pharo/bin [default: /opt/pharo/lib/pharo/5.0-201901231209/]


C stack backtrace & registers:
	rax 0x00000000 rbx 0x7f4aacbce700 rcx 0x00000000 rdx 0x00000014
	rdi 0x00000000 rsi 0x00000000 rbp 0x00000000 rsp 0x7fffdc831d00
	r8  0x00000000 r9  0x7f4aacbbce22 r10 0x00000006 r11 0x7fffdc831d08
	r12 0x00000040 r13 0x00000014 r14 0x00000000 r15 0x7f4aacbbce22
	rip 0x7f4aac72f3b9
*/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41b0d3]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41cb2e]
/lib/libpthread.so.0(+0x124d0)[0x7f4aaeb2d4d0]
/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/lib/libcrypto.so.1.1(RSA_size+0xe)[0x7f4aac81fa5e]
/lib/libcrypto.so.1.1(+0x1b43b6)[0x7f4aac8273b6]
/lib/libcrypto.so.1.1(RSA_verify+0x2b)[0x7f4aac82777b]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x2c2df)[0x7f4aac4672df]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xabbf)[0x7f4aac445bbf]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xe377)[0x7f4aac449377]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xffbe)[0x7f4aac44afbe]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x11cb6)[0x7f4aac44ccb6]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x1ad00)[0x7f4aac455d00]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(libssh2_session_handshake+0x2e)[0x7f4aac455f8f]
/lib/libgit2.so(+0xc3265)[0x7f4aacb33265]
/lib/libgit2.so(+0xbf06b)[0x7f4aacb2f06b]
/lib/libgit2.so(git_remote_connect+0x166)[0x7f4aacb0bf66]
/lib/libgit2.so(git_remote_fetch+0x97)[0x7f4aacb0d417]
/lib/libgit2.so(git_clone+0x36a)[0x7f4aaca9c4ea]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4cacb6]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4585f7]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x45a667]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo(ceSendsupertonumArgs+0x265)[0x45c4b5]
[0x1f00100]
[0x7f4aacbcc7b0]


Smalltalk stack dump:
    0x7fffdc85b750 M LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b7d0 I FFICalloutAPI>function:module: 0x25189e8: a(n) FFICalloutAPI
    0x7fffdc85b820 I LGitRepository(LGitExternalObject)>callUnchecked:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b870 I LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b8e8 I [] in LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b928 I LGitRepository(LGitExternalObject)>withReturnHandlerDo: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b970 I LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b9c8 I LGitRepository>clone:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85ba10 M [] in IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc859530 M BlockClosure>on:do: 0x245dcf0: a(n) BlockClosure
    0x7fffdc859588 I IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc8595c8 I IceRepositoryCreator>cloneRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8595f8 M [] in IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc859628 M BlockClosure>on:do: 0x2425460: a(n) BlockClosure
    0x7fffdc859678 I IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8596b8 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8596e8 M BlockClosure>on:do: 0x2425350: a(n) BlockClosure
    0x7fffdc859748 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859788 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8597b8 M BlockClosure>on:do: 0x24251f0: a(n) BlockClosure
    0x7fffdc859810 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859860 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859890 M OrderedCollection(Collection)>detect:ifFound:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc8598d8 M OrderedCollection(Collection)>detect:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc859930 I MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859980 I IceGithubRepositoryType>mcRepository 0x2423178: a(n) IceGithubRepositoryType
    0x7fffdc8599c0 I Iceberg class>mcRepositoryFor: 0x4319310: a(n) Iceberg class
    0x7fffdc859a08 I IceMetacelloPharoPlatform>createRepository: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8575a8 I MetacelloMCBaselineProject(MetacelloMCProject)>createRepository: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc8575f8 I MetacelloRepositorySpec>createRepository 0x23f7550: a(n) MetacelloRepositorySpec
    0x7fffdc857630 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857660 M Array(Collection)>detect:ifFound:ifNone: 0x241ff70: a(n) Array
    0x7fffdc8576a8 M Array(Collection)>detect:ifNone: 0x241ff70: a(n) Array
    0x7fffdc857708 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857750 M Array(SequenceableCollection)>do: 0x23fd878: a(n) Array
    0x7fffdc8577a8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc8577f8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857860 I MetacelloPackageSpec>explicitLoadUsing: 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578a8 I MetacelloPackageSpec>load 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578e0 M [] in MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857910 M BlockClosure>on:do: 0x23f9850: a(n) BlockClosure
    0x7fffdc857968 I MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8579b8 I MetacelloScriptEngine>getBaselineProjectUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857a00 I MetacelloMCBaselineProject>projectForScriptEngine:unconditionalLoad: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853408 I MetacelloMCBaselineProject(MetacelloProject)>projectForScriptEngine: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853458 I MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>versionForScriptEngine: 0x23f8ed0: a(n) MetacelloMCBaselineOfProjectSpec
    0x7fffdc8534b8 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8534e8 M BlockClosure>on:do: 0x23f7e58: a(n) BlockClosure
    0x7fffdc853530 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853560 M BlockClosure>on:do: 0x23f8148: a(n) BlockClosure
    0x7fffdc8535a8 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8535d8 M BlockClosure>on:do: 0x23f8048: a(n) BlockClosure
    0x7fffdc853620 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853650 M BlockClosure>on:do: 0x23f7f48: a(n) BlockClosure
    0x7fffdc8536a0 I MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8536f0 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853730 M BlockClosure>ensure: 0x23f7970: a(n) BlockClosure
    0x7fffdc853788 I MetacelloProjectRegistration class>copyRegistryRestoreOnErrorWhile: 0x2e68c50: a(n) MetacelloProjectRegistration class
    0x7fffdc8537d0 I MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853818 M MetacelloScriptEngine>load: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853860 M [] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538a0 M [] in MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538e8 M Array(SequenceableCollection)>do: 0x23f73c0: a(n) Array
    0x7fffdc853930 I MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853980 I ByteString(String)>execute:against: 0x23d3510: a(n) ByteString
    0x7fffdc8539d0 I MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853a10 M [] in MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855368 M [] in IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc8553a8 M BlockClosure>ensure: 0x23f6bf8: a(n) BlockClosure
    0x7fffdc855400 I IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc855450 I IceMetacelloLoadSessionContext class(DynamicVariable class)>value:during: 0x433ce98: a(n) IceMetacelloLoadSessionContext class
    0x7fffdc8554a8 I IceMetacelloPharoPlatform>withMetacelloLoadSessionDo: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8554f0 I MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855540 I Metacello>execute:args: 0x23f6660: a(n) Metacello
    0x7fffdc855590 I Metacello>load 0x23f6660: a(n) Metacello
    0x7fffdc8555c0 M UndefinedObject>DoIt 0x28e78e0: a(n) UndefinedObject
    0x7fffdc855608 I OpalCompiler>evaluate 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855648 I OpalCompiler>evaluate: 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855690 M [] in EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8556c0 M BlockClosure>on:do: 0x23d1290: a(n) BlockClosure
    0x7fffdc855718 I EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc855768 I EvaluateCommandLineHandler>evaluateArguments 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557a8 I EvaluateCommandLineHandler>activate 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557e8 I EvaluateCommandLineHandler class(CommandLineHandler class)>activateWith: 0x2a271e0: a(n) EvaluateCommandLineHandler class
    0x7fffdc855828 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855858 M BlockClosure>on:do: 0x23cd300: a(n) BlockClosure
    0x7fffdc855898 M PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc8558e8 I PharoCommandLineHandler(BasicCommandLineHandler)>handleSubcommand 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855928 I PharoCommandLineHandler(BasicCommandLineHandler)>handleArgument: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855960 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855990 M BlockClosure>on:do: 0x23c9fb8: a(n) BlockClosure
    0x7fffdc8559d0 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855a10 I [] in BlockClosure>newProcess 0x23c97a0: a(n) BlockClosure

Most recent primitives
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
lookupDirectory:filename:
class
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
perform:
stringHash:initialHash:
compare:with:collated:
perform:
class
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
at:
basicNew:
replaceFrom:to:with:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
basicNew
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
**StackOverflow**
stringHash:initialHash:
isOctetString
basicNew:
**StackOverflow**
stringHash:initialHash:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
class
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
basicNew
basicNew
basicNew
basicNew
shallowCopy
stringHash:initialHash:
basicNew
basicNew
class
basicNew
basicIdentityHash
basicNew
basicNew
**StackOverflow**
basicNew
stringHash:initialHash:
**StackOverflow**
parameterAt:
stringHash:initialHash:
setIsReadOnlyObject:
basicIdentityHash
stringHash:initialHash:
class
=
class
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
size
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
class
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
class
stringHash:initialHash:
hash
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
basicNew
class
stringHash:initialHash:
compare:with:collated:
perform:
newMethod:header:
at:put:
at:put:
at:put:
at:put:
basicNew
size
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
basicIdentityHash
objectAt:put:
stringHash:initialHash:
stringHash:initialHash:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicAt:
at:put:
flushCache
basicIdentityHash
basicIdentityHash
at:
new:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
withArgs:executeMethod:
instVarAt:
size
allocate:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
class
clone
basicIdentityHash
at:
wait
**StackOverflow**
basicNew:
basicNew:
signal
invokeWithArguments:

stack page bytes 8192 available headroom 5576 minimum unused headroom 5936

	(Segmentation fault)


On 30 Apr 2019, at 15:18, Guillermo Polito <[hidden email]> wrote:

Hi Tim,

Looking at the resolution of the libgit library, I see that in pharo7 the following:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

That definition may be the root of the problem in linux because it is returning the unqualified library name without the VM path.
Then, the order of resolution of libraries is the one in the operating system, which is in your case probably searching in /usr/lib or something like that.
I'd bet that you have in your system (/usr/lib/something) another libgit version but probably not matching the expected version in pharo or the architecture of pharo (32/64 bits).
Thus, pharo finds the library but cannot load it...

If you check in Pharo8, the same method reads slightly different:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ (pluginDir / libName) fullName ].

self error: 'Module not found.'

Can you check that patching the method like that works in your case?
This maybe deserves a backporting as it may make it super complicated to work with Iceberg in some linuxes...

On Tue, Apr 30, 2019 at 3:08 PM Tim Mackinnon <[hidden email]> wrote:
Did we ever get the bottom of installing Pharo on linux? I have a user on Arch linux who installed pharo from AUR (this is new stuff to me) - and once they downloaded an image - they now get an error that looks suspiciously like this libgit2 debacle - so I’m wondering what the solution was?

The error is:

External module not found
ExternalLibraryFunction(Object)>>error:
ExternalLibraryFunction(Object)>>externalCallFailed
ExternalLibraryFunction(ExternalFunction)>>invokeWithArguments:
LGitLibrary>>libgit2_init
FFICalloutAPI>>function:module:
LGitLibrary(Object)>>ffiCall:
LGitLibrary>>libgit2_init
[ self libgit2_init.
self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....
BlockClosure>>on:do:

...

On 4 Apr 2019, at 15:07, Vitor Medina Cruz <[hidden email]> wrote:

No, you can't install libcurl3 with libcurl4. There is a known conflict between them: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900511

Ubuntu 18.4 don't come with curl, but I think it comes with libcurl3 (I don't have means to verify it now), but when you install curl, it installs libcurl4 and removes libcurl3.

On Thu, Apr 4, 2019 at 11:00 AM Richard O'Keefe <[hidden email]> wrote:
apt-cache search
reports everything it knows about, not just things that are INSTALLED.
For example, apt-cache search reports lua-curl-dev, but it is not
installed.
apt list | grep lua-curl-dev

The fact that neither libcurl3 nor libcurl4 is initially installed
means that either of them can be installed without conflict.

On Thu, 4 Apr 2019 at 01:34, Ben Coman <[hidden email]> wrote:

On Wed, 3 Apr 2019 at 05:09, Richard O'Keefe <[hidden email]> wrote:
I just did a complete reinstall of Ubuntu 18.4 on this
laptop yesterday,

 
and it did not come with any version of curl. 

What do you mean? Under WSL I have installed Ubuntu 18.4 and for...
    $ apt-cache search libcurl | less
I see libcurl3 and libcurl4

cheers -ben
 
uname -a =>
Linux Inspiron 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



On Wed, 3 Apr 2019 at 01:27, Vitor Medina Cruz <[hidden email]> wrote:
Installing curl don't work because there is a conflict between curl version name used on Ubuntu and that used by Pharo, you can't install libcurl 3 and libcru4 together. Ubuntu 18 comes with libcurl4 and older software depending on libcurl3 broke with it. I tested with minidebian and it also failed.

Richard, was you able to use Iceberg? It should only work if either Ubuntu fix this dependency problem with libcurl or Pharo started to use libcrl4.



On Tue, Apr 2, 2019 at 5:50 AM Richard O'Keefe <[hidden email]> wrote:
I have Pharo 6.1 and Pharo 7.0 working in Ubuntu 18.04
with no trouble so far.  I just downloaded the launcher
from pharo.org and pulled the images down that way.

One thing I do find annoying in Ubuntu 18.04 is the
number of programs (like okular) that spew warning
messages out the terminal.  Pharo, sadly, is one of
them.  Whenever a debugger window comes up in Pharo
there is spewage on the terminal.  But it works.


On Tue, 2 Apr 2019 at 13:07, john pfersich <[hidden email]> wrote:
Ubuntu 18.04 LTS is, IMHO, is royal piece of crap. Ubuntu seems to have abandoned programmers tools almost completely in 18.04. I’ve had more problems with support of programming tools in 18.04, more than even Windows. I have run ‘sudo apt install’ maybe 80 times to install tools and libraries. Ubuntu 18.04’s hardware support is also lame compared to 16.04.
Personally , I’m not surprised that Pharo doesn’t run on 18.04. I stopped installing 18.04 on my new machines, after all 16.04 still has a few years of support going for it, and at least it works without hours of upgrading.

/*—————————————————-*/
Sent from my iPhone
https://boincstats.com/signature/-1/user/51616339056/sig.png
See https://objectnets.net and https://objectnets.org

> On Apr 1, 2019, at 06:06, horrido <[hidden email]> wrote:
>
> This issue bit me in the ass before, but I forgot. Yes, I had a senior
> moment.
>
> The issue is this: When I tried to run Pharo under Ubuntu Server 18.04 at
> OVH last year, it failed. I had to fall back to Ubuntu Server 16.04.
>
> This week, I tried to run Pharo under Ubuntu Server 18.04 at Google Cloud
> Platform and it failed. Again, I had to fall back to Ubuntu Server 16.04.
>
> Why does this issue keep biting me in the ass??? Because I'm 65 and my brain
> is dying.
>
> The bigger issue is this: Hosting services like Digital Ocean, OVH, and
> Google Cloud Platform are becoming increasingly important in the enterprise
> space. If Pharo can't run on these server operating systems, it's going to
> be a black eye for the language. We can get away with not supporting this
> for now, but it will eventually catch up with us.
>
> At Google Cloud Platform, for example, the user can choose from this list of
> hosts: Debian GNU/Linux 9 (Stretch), CentOS 6, CentOS 7, various versions of
> CoreOS, Ubuntu 14.04 LTS Minimal, Ubuntu 16.04 LTS Minimal, Ubuntu 18.04 LTS
> Minimal, Ubuntu 18.10 Minimal, various versions of Red Hat, various versions
> of SUSE, various versions of Window, and so on. It's a long list. *I
> strongly suspect that many of these are unusable with Pharo.*
>
> How to address this? I don't know. But if it's not a major problem now, it
> will be. It's bitten me in the ass twice, and I can't be alone.
>
> I'm giving a fair warning to everyone. Don't lash back at me – I'm just the
> canary in the coal mine.
>
>
>
>
> Tim Mackinnon wrote
>> Come on, let’s try not to be dismissive , we’ve all had that annoying
>> moment where something doesn’t work.
>>
>> Richard, was this installed with zero conf or Launcher, and as mentioned -
>> a Linux distro is going to be helpful.
>>
>> I’m assuming it worked before at some point for you right? But was that v6
>> and now you’re trying v7?
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>>> On 31 Mar 2019, at 23:46, john pfersich &lt;
>
>> jpfersich@
>
>> &gt; wrote:
>>>
>>> What Linux (distro and version) and which version of Pharo. You couldn’t
>>> supply less information if you tried.
>>>
>>>
>>> /*—————————————————-*/
>>> Sent from my iPhone
>>> https://boincstats.com/signature/-1/user/51616339056/sig.png
>>> See https://objectnets.net and https://objectnets.org
>>>
>>>> On Mar 31, 2019, at 14:21, Richard Kenneth Eng &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>>
>>>> I just installed Pharo under Linux and when I start it up, I get:
>>>>
>>>> Error: External module not found
>>>>
>>>> It doesn't matter how I install Pharo.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>




--
   
Guille Polito
Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille
CRIStAL - UMR 9189
French National Center for Scientific Research - http://www.cnrs.fr

Phone: +33 06 52 70 66 13



Reply | Threaded
Open this post in threaded view
|

Re: What's wrong with latest Pharo?

Tim Mackinnon
Oh well - even after modifying that method and trying the remoteTypeSelector: trick it insists on giving the iceAuthenticationError - so maybe the libcurl2 install didn’t work (he said he had to install "libcurl-gnutls” to get that far).

Interestingly - my osx setup has suddenly starting giving me an IceAuthenticationError in a fresh image (I can’t imagine its related is it? Could that repo suddenly have some issue? I had the same error yesterday and had to clear out the iceberg-local). It seems that iceberg is still not quite as rock solid as we would like.

Tim

On 30 Apr 2019, at 17:15, Tim Mackinnon <[hidden email]> wrote:

Guille - it looks like modifying that method and :
"I installed some other package (`libcurl-gnutls`) which is an "addon" to the regular `libcurl`.”

Got us further - now he’s getting IceAuthenticationError- which could be down to git vs https. (I can use the #remoteTypeSelector: trick to hopefully fix that).

When I confirm everything, I will report back the magic syntax (at least for Arch) - as well as the desire to back port that fix to 7.

Thanks for chipping in (and this is the thread that keeps on giving…)

Tim

On 30 Apr 2019, at 16:08, Tim Mackinnon <[hidden email]> wrote:

Actually - the user has confirmed a bit more (which sounds like your hunch Guille):

Hmm… Just loading the image without `eval`ing something seems to boot up well. But then I also realise, that there is a warning:

```ioLoadModule(/opt/pharo/bin/../lib/pharo/5.0-201901231209/libgit2.so):
  libcurl-gnutls.so.4: cannot open shared object file: No such file or directory```
(edited)

So this looks like pharo tries to load a bundled libgit2 first during bootup which fails and only later, when trying to call into it, system resolves into the system installed one.
Which then causes the segfault for some reason.

I’ll see if I can guide him through changing that method.

Tim

On 30 Apr 2019, at 15:53, Tim Mackinnon <[hidden email]> wrote:

Hi Guille - I’m not using Arch Linux myself - this was a seasoned exercism contributor trying to give pharo a spin - and sadly it hasn’t gone well (shame as they might have been an advocate) They also commented:

"I'm not quite sure though if I really want to continue from here. As someone new to pharo, I basically can't find any installation instructions that go beyond that evil `curl`. I'm happy to play this to the end with you, that at least exercism gets proper instructions, but the pharo community really should change their mind and provide more and better documentation about systemwide installation and packages. I have a hard time seeing something used at my compnay that does not provide an RPM out of the box…”

Which is fair play.

However I did get some details which might salvage something (and maybe they can try)

Its ArchLinux (apparently there are no versions in Arch, its always the latest).
Pharo wa installed via AUR (looks like a bit old - 2019-01-24 18:18) - not sure that is the issue though
AUR does give an image so they downloaded the latest 64 bit one from here - https://files.pharo.org/image/70/
Libgit2 was missing - that was installed (not clear on how - could ask)

After all of this - it did launch - they saw a welcome screen then it crashed (I think they were doing our eval string to metacello load exercism - so it would then use libgit2)

They then got this error:

I’ve pasted the error below - for prosperity.

Tim

Pharo VM version: 5.0-201901231209  Wed Jan 23 12:32:13 UTC 2019 gcc 4.8 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Jan 23 2019
Revision: VM: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Wed Jan 23 07:09:49 2019 CommitHash: a4b2dfa6 Plugins: 201901231209 https://github.com/OpenSmalltalk/opensmalltalk-vm.git
Build host: Linux travis-job-3a8f8935-e791-48da-aa41-2eccc2452870 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /opt/pharo/bin [default: /opt/pharo/lib/pharo/5.0-201901231209/]


C stack backtrace & registers:
	rax 0x00000000 rbx 0x7f4aacbce700 rcx 0x00000000 rdx 0x00000014
	rdi 0x00000000 rsi 0x00000000 rbp 0x00000000 rsp 0x7fffdc831d00
	r8  0x00000000 r9  0x7f4aacbbce22 r10 0x00000006 r11 0x7fffdc831d08
	r12 0x00000040 r13 0x00000014 r14 0x00000000 r15 0x7f4aacbbce22
	rip 0x7f4aac72f3b9
*/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41b0d3]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x41cb2e]
/lib/libpthread.so.0(+0x124d0)[0x7f4aaeb2d4d0]
/lib/libcrypto.so.1.1(BN_num_bits+0x9)[0x7f4aac72f3b9]
/lib/libcrypto.so.1.1(RSA_size+0xe)[0x7f4aac81fa5e]
/lib/libcrypto.so.1.1(+0x1b43b6)[0x7f4aac8273b6]
/lib/libcrypto.so.1.1(RSA_verify+0x2b)[0x7f4aac82777b]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x2c2df)[0x7f4aac4672df]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xabbf)[0x7f4aac445bbf]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xe377)[0x7f4aac449377]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0xffbe)[0x7f4aac44afbe]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x11cb6)[0x7f4aac44ccb6]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(+0x1ad00)[0x7f4aac455d00]
/opt/pharo/lib/pharo/5.0-201901231209/libssh2.so.1(libssh2_session_handshake+0x2e)[0x7f4aac455f8f]
/lib/libgit2.so(+0xc3265)[0x7f4aacb33265]
/lib/libgit2.so(+0xbf06b)[0x7f4aacb2f06b]
/lib/libgit2.so(git_remote_connect+0x166)[0x7f4aacb0bf66]
/lib/libgit2.so(git_remote_fetch+0x97)[0x7f4aacb0d417]
/lib/libgit2.so(git_clone+0x36a)[0x7f4aaca9c4ea]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4cacb6]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x4585f7]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo[0x45a667]
/opt/pharo/bin/../lib/pharo/5.0-201901231209/pharo(ceSendsupertonumArgs+0x265)[0x45c4b5]
[0x1f00100]
[0x7f4aacbcc7b0]


Smalltalk stack dump:
    0x7fffdc85b750 M LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b7d0 I FFICalloutAPI>function:module: 0x25189e8: a(n) FFICalloutAPI
    0x7fffdc85b820 I LGitRepository(LGitExternalObject)>callUnchecked:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b870 I LGitRepository>clone:url:local_path:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b8e8 I [] in LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b928 I LGitRepository(LGitExternalObject)>withReturnHandlerDo: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b970 I LGitRepository>clone:options:to: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85b9c8 I LGitRepository>clone:options: 0x246e7f0: a(n) LGitRepository
    0x7fffdc85ba10 M [] in IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc859530 M BlockClosure>on:do: 0x245dcf0: a(n) BlockClosure
    0x7fffdc859588 I IceGitClone>execute 0x24431e0: a(n) IceGitClone
    0x7fffdc8595c8 I IceRepositoryCreator>cloneRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8595f8 M [] in IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc859628 M BlockClosure>on:do: 0x2425460: a(n) BlockClosure
    0x7fffdc859678 I IceRepositoryCreator>createRepository 0x2425258: a(n) IceRepositoryCreator
    0x7fffdc8596b8 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8596e8 M BlockClosure>on:do: 0x2425350: a(n) BlockClosure
    0x7fffdc859748 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryFor: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859788 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc8597b8 M BlockClosure>on:do: 0x24251f0: a(n) BlockClosure
    0x7fffdc859810 I MCGitHubRepository(MCGitBasedNetworkRepository)>createIcebergRepositoryWithFallbackFor:url: 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859860 M [] in MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859890 M OrderedCollection(Collection)>detect:ifFound:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc8598d8 M OrderedCollection(Collection)>detect:ifNone: 0x433cdb0: a(n) OrderedCollection
    0x7fffdc859930 I MCGitHubRepository(MCGitBasedNetworkRepository)>getOrCreateIcebergRepository 0x2424000: a(n) MCGitHubRepository
    0x7fffdc859980 I IceGithubRepositoryType>mcRepository 0x2423178: a(n) IceGithubRepositoryType
    0x7fffdc8599c0 I Iceberg class>mcRepositoryFor: 0x4319310: a(n) Iceberg class
    0x7fffdc859a08 I IceMetacelloPharoPlatform>createRepository: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8575a8 I MetacelloMCBaselineProject(MetacelloMCProject)>createRepository: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc8575f8 I MetacelloRepositorySpec>createRepository 0x23f7550: a(n) MetacelloRepositorySpec
    0x7fffdc857630 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857660 M Array(Collection)>detect:ifFound:ifNone: 0x241ff70: a(n) Array
    0x7fffdc8576a8 M Array(Collection)>detect:ifNone: 0x241ff70: a(n) Array
    0x7fffdc857708 M [] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857750 M Array(SequenceableCollection)>do: 0x23fd878: a(n) Array
    0x7fffdc8577a8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom:ignoreOverrides: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc8577f8 I MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>repositoriesFrom: 0x23fd2f8: a(n) MetacelloFetchingMCSpecLoader
    0x7fffdc857860 I MetacelloPackageSpec>explicitLoadUsing: 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578a8 I MetacelloPackageSpec>load 0x23f9898: a(n) MetacelloPackageSpec
    0x7fffdc8578e0 M [] in MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857910 M BlockClosure>on:do: 0x23f9850: a(n) BlockClosure
    0x7fffdc857968 I MetacelloScriptEngine>getBaselineUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8579b8 I MetacelloScriptEngine>getBaselineProjectUnconditionalLoad: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc857a00 I MetacelloMCBaselineProject>projectForScriptEngine:unconditionalLoad: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853408 I MetacelloMCBaselineProject(MetacelloProject)>projectForScriptEngine: 0x23f7300: a(n) MetacelloMCBaselineProject
    0x7fffdc853458 I MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>versionForScriptEngine: 0x23f8ed0: a(n) MetacelloMCBaselineOfProjectSpec
    0x7fffdc8534b8 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8534e8 M BlockClosure>on:do: 0x23f7e58: a(n) BlockClosure
    0x7fffdc853530 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853560 M BlockClosure>on:do: 0x23f8148: a(n) BlockClosure
    0x7fffdc8535a8 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8535d8 M BlockClosure>on:do: 0x23f8048: a(n) BlockClosure
    0x7fffdc853620 M [] in MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853650 M BlockClosure>on:do: 0x23f7f48: a(n) BlockClosure
    0x7fffdc8536a0 I MetacelloScriptEngine>handleNotificationsForAction: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc8536f0 M [] in MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853730 M BlockClosure>ensure: 0x23f7970: a(n) BlockClosure
    0x7fffdc853788 I MetacelloProjectRegistration class>copyRegistryRestoreOnErrorWhile: 0x2e68c50: a(n) MetacelloProjectRegistration class
    0x7fffdc8537d0 I MetacelloScriptEngine>load:onProjectDownGrade:onProjectUpgrade: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853818 M MetacelloScriptEngine>load: 0x23f7638: a(n) MetacelloScriptEngine
    0x7fffdc853860 M [] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538a0 M [] in MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc8538e8 M Array(SequenceableCollection)>do: 0x23f73c0: a(n) Array
    0x7fffdc853930 I MetacelloScriptApiExecutor>executeString:do: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853980 I ByteString(String)>execute:against: 0x23d3510: a(n) ByteString
    0x7fffdc8539d0 I MetacelloScriptApiExecutor(MetacelloScriptExecutor)>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc853a10 M [] in MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855368 M [] in IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc8553a8 M BlockClosure>ensure: 0x23f6bf8: a(n) BlockClosure
    0x7fffdc855400 I IceMetacelloLoadSessionContext(DynamicVariable)>value:during: 0x43a6b48: a(n) IceMetacelloLoadSessionContext
    0x7fffdc855450 I IceMetacelloLoadSessionContext class(DynamicVariable class)>value:during: 0x433ce98: a(n) IceMetacelloLoadSessionContext class
    0x7fffdc8554a8 I IceMetacelloPharoPlatform>withMetacelloLoadSessionDo: 0x4348f58: a(n) IceMetacelloPharoPlatform
    0x7fffdc8554f0 I MetacelloScriptApiExecutor>execute: 0x23f69a8: a(n) MetacelloScriptApiExecutor
    0x7fffdc855540 I Metacello>execute:args: 0x23f6660: a(n) Metacello
    0x7fffdc855590 I Metacello>load 0x23f6660: a(n) Metacello
    0x7fffdc8555c0 M UndefinedObject>DoIt 0x28e78e0: a(n) UndefinedObject
    0x7fffdc855608 I OpalCompiler>evaluate 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855648 I OpalCompiler>evaluate: 0x23d12e0: a(n) OpalCompiler
    0x7fffdc855690 M [] in EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8556c0 M BlockClosure>on:do: 0x23d1290: a(n) BlockClosure
    0x7fffdc855718 I EvaluateCommandLineHandler>evaluate: 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc855768 I EvaluateCommandLineHandler>evaluateArguments 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557a8 I EvaluateCommandLineHandler>activate 0x23cd350: a(n) EvaluateCommandLineHandler
    0x7fffdc8557e8 I EvaluateCommandLineHandler class(CommandLineHandler class)>activateWith: 0x2a271e0: a(n) EvaluateCommandLineHandler class
    0x7fffdc855828 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855858 M BlockClosure>on:do: 0x23cd300: a(n) BlockClosure
    0x7fffdc855898 M PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc8558e8 I PharoCommandLineHandler(BasicCommandLineHandler)>handleSubcommand 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855928 I PharoCommandLineHandler(BasicCommandLineHandler)>handleArgument: 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855960 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855990 M BlockClosure>on:do: 0x23c9fb8: a(n) BlockClosure
    0x7fffdc8559d0 M [] in PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x604b7b8: a(n) PharoCommandLineHandler
    0x7fffdc855a10 I [] in BlockClosure>newProcess 0x23c97a0: a(n) BlockClosure

Most recent primitives
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
**StackOverflow**
translate:from:to:table:
stringHash:initialHash:
**StackOverflow**
translate:from:to:table:
compare:with:collated:
findFirstInString:inSet:startingAt:
lookupDirectory:filename:
class
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
perform:
stringHash:initialHash:
compare:with:collated:
perform:
class
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
at:
basicNew:
replaceFrom:to:with:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
basicNew
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
**StackOverflow**
stringHash:initialHash:
isOctetString
basicNew:
**StackOverflow**
stringHash:initialHash:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
class
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
**StackOverflow**
**StackOverflow**
stringHash:initialHash:
compare:with:collated:
compare:with:collated:
compare:with:collated:
stringHash:initialHash:
compare:with:collated:
basicNew
basicNew
basicNew
basicNew
shallowCopy
stringHash:initialHash:
basicNew
basicNew
class
basicNew
basicIdentityHash
basicNew
basicNew
**StackOverflow**
basicNew
stringHash:initialHash:
**StackOverflow**
parameterAt:
stringHash:initialHash:
setIsReadOnlyObject:
basicIdentityHash
stringHash:initialHash:
class
=
class
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
size
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
class
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
class
stringHash:initialHash:
hash
stringHash:initialHash:
stringHash:initialHash:
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
basicNew
class
stringHash:initialHash:
compare:with:collated:
perform:
newMethod:header:
at:put:
at:put:
at:put:
at:put:
basicNew
size
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
basicIdentityHash
objectAt:put:
stringHash:initialHash:
stringHash:initialHash:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicNew:
instVarAt:
instVarAt:put:
instVarAt:
instVarAt:put:
objectAt:put:
basicAt:
at:put:
flushCache
basicIdentityHash
basicIdentityHash
at:
new:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
tempAt:
at:put:
withArgs:executeMethod:
instVarAt:
size
allocate:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
integerAt:put:size:signed:
class
clone
basicIdentityHash
at:
wait
**StackOverflow**
basicNew:
basicNew:
signal
invokeWithArguments:

stack page bytes 8192 available headroom 5576 minimum unused headroom 5936

	(Segmentation fault)


On 30 Apr 2019, at 15:18, Guillermo Polito <[hidden email]> wrote:

Hi Tim,

Looking at the resolution of the libgit library, I see that in pharo7 the following:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ libName ].

self error: 'Module not found.'

That definition may be the root of the problem in linux because it is returning the unqualified library name without the VM path.
Then, the order of resolution of libraries is the one in the operating system, which is in your case probably searching in /usr/lib or something like that.
I'd bet that you have in your system (/usr/lib/something) another libgit version but probably not matching the expected version in pharo or the architecture of pharo (32/64 bits).
Thus, pharo finds the library but cannot load it...

If you check in Pharo8, the same method reads slightly different:

LGitLibrary >> unixModuleName
| pluginDir |
pluginDir := Smalltalk vm binary parent.
#('libgit2.so' 'libgit2.so.0')
detect: [ :each | (pluginDir / each) exists ] 
ifFound: [ :libName | ^ (pluginDir / libName) fullName ].

self error: 'Module not found.'

Can you check that patching the method like that works in your case?
This maybe deserves a backporting as it may make it super complicated to work with Iceberg in some linuxes...

On Tue, Apr 30, 2019 at 3:08 PM Tim Mackinnon <[hidden email]> wrote:
Did we ever get the bottom of installing Pharo on linux? I have a user on Arch linux who installed pharo from AUR (this is new stuff to me) - and once they downloaded an image - they now get an error that looks suspiciously like this libgit2 debacle - so I’m wondering what the solution was?

The error is:

External module not found
ExternalLibraryFunction(Object)>>error:
ExternalLibraryFunction(Object)>>externalCallFailed
ExternalLibraryFunction(ExternalFunction)>>invokeWithArguments:
LGitLibrary>>libgit2_init
FFICalloutAPI>>function:module:
LGitLibrary(Object)>>ffiCall:
LGitLibrary>>libgit2_init
[ self libgit2_init.
self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....
BlockClosure>>on:do:

...

On 4 Apr 2019, at 15:07, Vitor Medina Cruz <[hidden email]> wrote:

No, you can't install libcurl3 with libcurl4. There is a known conflict between them: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1754294, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900511

Ubuntu 18.4 don't come with curl, but I think it comes with libcurl3 (I don't have means to verify it now), but when you install curl, it installs libcurl4 and removes libcurl3.

On Thu, Apr 4, 2019 at 11:00 AM Richard O'Keefe <[hidden email]> wrote:
apt-cache search
reports everything it knows about, not just things that are INSTALLED.
For example, apt-cache search reports lua-curl-dev, but it is not
installed.
apt list | grep lua-curl-dev

The fact that neither libcurl3 nor libcurl4 is initially installed
means that either of them can be installed without conflict.

On Thu, 4 Apr 2019 at 01:34, Ben Coman <[hidden email]> wrote:

On Wed, 3 Apr 2019 at 05:09, Richard O'Keefe <[hidden email]> wrote:
I just did a complete reinstall of Ubuntu 18.4 on this
laptop yesterday,

 
and it did not come with any version of curl. 

What do you mean? Under WSL I have installed Ubuntu 18.4 and for...
    $ apt-cache search libcurl | less
I see libcurl3 and libcurl4

cheers -ben
 
uname -a =>
Linux Inspiron 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux



On Wed, 3 Apr 2019 at 01:27, Vitor Medina Cruz <[hidden email]> wrote:
Installing curl don't work because there is a conflict between curl version name used on Ubuntu and that used by Pharo, you can't install libcurl 3 and libcru4 together. Ubuntu 18 comes with libcurl4 and older software depending on libcurl3 broke with it. I tested with minidebian and it also failed.

Richard, was you able to use Iceberg? It should only work if either Ubuntu fix this dependency problem with libcurl or Pharo started to use libcrl4.



On Tue, Apr 2, 2019 at 5:50 AM Richard O'Keefe <[hidden email]> wrote:
I have Pharo 6.1 and Pharo 7.0 working in Ubuntu 18.04
with no trouble so far.  I just downloaded the launcher
from pharo.org and pulled the images down that way.

One thing I do find annoying in Ubuntu 18.04 is the
number of programs (like okular) that spew warning
messages out the terminal.  Pharo, sadly, is one of
them.  Whenever a debugger window comes up in Pharo
there is spewage on the terminal.  But it works.


On Tue, 2 Apr 2019 at 13:07, john pfersich <[hidden email]> wrote:
Ubuntu 18.04 LTS is, IMHO, is royal piece of crap. Ubuntu seems to have abandoned programmers tools almost completely in 18.04. I’ve had more problems with support of programming tools in 18.04, more than even Windows. I have run ‘sudo apt install’ maybe 80 times to install tools and libraries. Ubuntu 18.04’s hardware support is also lame compared to 16.04.
Personally , I’m not surprised that Pharo doesn’t run on 18.04. I stopped installing 18.04 on my new machines, after all 16.04 still has a few years of support going for it, and at least it works without hours of upgrading.

/*—————————————————-*/
Sent from my iPhone
https://boincstats.com/signature/-1/user/51616339056/sig.png
See https://objectnets.net and https://objectnets.org

> On Apr 1, 2019, at 06:06, horrido <[hidden email]> wrote:
>
> This issue bit me in the ass before, but I forgot. Yes, I had a senior
> moment.
>
> The issue is this: When I tried to run Pharo under Ubuntu Server 18.04 at
> OVH last year, it failed. I had to fall back to Ubuntu Server 16.04.
>
> This week, I tried to run Pharo under Ubuntu Server 18.04 at Google Cloud
> Platform and it failed. Again, I had to fall back to Ubuntu Server 16.04.
>
> Why does this issue keep biting me in the ass??? Because I'm 65 and my brain
> is dying.
>
> The bigger issue is this: Hosting services like Digital Ocean, OVH, and
> Google Cloud Platform are becoming increasingly important in the enterprise
> space. If Pharo can't run on these server operating systems, it's going to
> be a black eye for the language. We can get away with not supporting this
> for now, but it will eventually catch up with us.
>
> At Google Cloud Platform, for example, the user can choose from this list of
> hosts: Debian GNU/Linux 9 (Stretch), CentOS 6, CentOS 7, various versions of
> CoreOS, Ubuntu 14.04 LTS Minimal, Ubuntu 16.04 LTS Minimal, Ubuntu 18.04 LTS
> Minimal, Ubuntu 18.10 Minimal, various versions of Red Hat, various versions
> of SUSE, various versions of Window, and so on. It's a long list. *I
> strongly suspect that many of these are unusable with Pharo.*
>
> How to address this? I don't know. But if it's not a major problem now, it
> will be. It's bitten me in the ass twice, and I can't be alone.
>
> I'm giving a fair warning to everyone. Don't lash back at me – I'm just the
> canary in the coal mine.
>
>
>
>
> Tim Mackinnon wrote
>> Come on, let’s try not to be dismissive , we’ve all had that annoying
>> moment where something doesn’t work.
>>
>> Richard, was this installed with zero conf or Launcher, and as mentioned -
>> a Linux distro is going to be helpful.
>>
>> I’m assuming it worked before at some point for you right? But was that v6
>> and now you’re trying v7?
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>>> On 31 Mar 2019, at 23:46, john pfersich &lt;
>
>> jpfersich@
>
>> &gt; wrote:
>>>
>>> What Linux (distro and version) and which version of Pharo. You couldn’t
>>> supply less information if you tried.
>>>
>>>
>>> /*—————————————————-*/
>>> Sent from my iPhone
>>> https://boincstats.com/signature/-1/user/51616339056/sig.png
>>> See https://objectnets.net and https://objectnets.org
>>>
>>>> On Mar 31, 2019, at 14:21, Richard Kenneth Eng &lt;
>
>> horrido.hobbies@
>
>> &gt; wrote:
>>>>
>>>> I just installed Pharo under Linux and when I start it up, I get:
>>>>
>>>> Error: External module not found
>>>>
>>>> It doesn't matter how I install Pharo.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>




--
   
Guille Polito
Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille
CRIStAL - UMR 9189
French National Center for Scientific Research - http://www.cnrs.fr

Phone: +33 06 52 70 66 13




12