Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
March 2018
- 678 messages
Re: [Pharo-dev] The 6.1 Space Monkey is unhappy
by Stephane Ducasse
On Mon, Mar 5, 2018 at 2:29 PM, Pavel Krivanek <pavel.krivanek(a)gmail.com> wrote:
> 2018-03-05 14:14 GMT+01:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
>> Hi pavel
>>
>> when I'm back can you explain to me because I did not get it :).
>
> :) it is simple. If you want to ignore issues that the slice is not
> adding, you need to know which of them to ignore. That's why the
> original monkey run all the validations twice - first time to collect
> a list of failing tests in the fresh unchanged image and then with the
> slice or configuration loaded. So it doubled the issue validation
> time.
It sounds good :)
> There are several alternative strategies like to cache the failing
> test results for every build and use them for validations but the best
> strategy is simply to keep the amount of failing tests in the clean
> image on the zero level and force people to keep the system clean.
Yes!
> The
> original monkey hasn't exposed the list of ignored tests. So it was
> possible that some test was ignored because of a temporal network
> issue but for the second time it failed for o good reason and you even
> didn't know.
>
> Cheers,
> -- Pavel
>
>>
>> Stef
>>
>>
>> On Mon, Mar 5, 2018 at 11:07 AM, Pavel Krivanek
>> <pavel.krivanek(a)gmail.com> wrote:
>>> 2018-03-05 10:54 GMT+01:00 Marcus Denker <marcus.denker(a)inria.fr>:
>>>>
>>>>
>>>>> On 5 Mar 2018, at 10:27, Alistair Grant <akgrant0710(a)gmail.com> wrote:
>>>>>
>>>>> Hi Marcus,
>>>>>
>>>>> On 5 March 2018 at 09:23, Marcus Denker <marcus.denker(a)inria.fr> wrote:
>>>>>>
>>>>>>
>>>>>>> On 5 Mar 2018, at 09:16, Alistair Grant <akgrant0710(a)gmail.com> wrote:
>>>>>>>
>>>>>>> Hi Esteban & Marcus,
>>>>>>>
>>>>>>> I'm getting repeated validation failures for:
>>>>>>>
>>>>>>> https://pharo.manuscript.com/f/cases/21431
>>>>>>>
>>>>>>>
>>>>>>> It's the same set of tests that fail each time, and as far as I can
>>>>>>> tell they have nothing to do with the patch I submitted.
>>>>>>>
>>>>>>> Do you know if this is happening on other tests?
>>>>>>
>>>>>> I saw that Saturday but decided to wait till Monday (weekends are important..).
>>>>>>
>>>>>> So: no, I have *no* idea what happened. From one CI run to the next,
>>>>>> suddenly around 160 tests related to Calypso started failing due to a missing method.
>>>>>>
>>>>>> Now starting from sometime today, this problem stoped. The last failing PR checks
>>>>>> fail due to different reasonsâ¦
>>>>>>
>>>>>> And I have no idea why.
>>>>>>
>>>>>> (And yes, we al know that
>>>>>> 1) the PR checks need more compute power, too slow
>>>>>> 2) we *need* to track down the reason why still *a lot* of times the PR fails
>>>>>> even though it should not.
>>>>>>
>>>>>> The problem is that just keeping a build alive of this kind is a full time job.. that
>>>>>> we have nobody doing, so many many people do as much as they can and we
>>>>>> hope it will get betterâ¦.)
>>>>>
>>>>> Thanks for the update.
>>>>>
>>>>
>>>> Oh, and it was completely unrelated. Your change is for Pharo6...
>>>>
>>>>> I took a look at the failures and it appears that
>>>>>
>>>>> BehaviorTest>>testBehaviorRespectsPolymorphismWithTraitBehavior
>>>>> ClassDescriptionTest>>testClassDescriptionRespectsPolymorphismWithTraitDescription
>>>>> ClassTest>>testClassRespectsPolymorphismWithTrait
>>>>>
>>>>> are all failing due to changes in Fuel - methods were changed from
>>>>> traits to local methods.
>>>>>
>>>> Yes, the problem is that the monkey (the contribution checker) fails as soon
>>>> as there are errors even in the main image.
>>>>
>>>> The last Pharo6 has these tests failing, so now all contribution checks for
>>>> Pharo6 fail.
>>>>
>>>> What needs to be done?
>>>>
>>>> -> your change can be accepted as we know it does not fail more fixes
>>>> -> then we need fix the tests in Pharo6
>>>> -> in a perfect world we would update the slice checker to only fail for
>>>> now test failing⦠(it used to be lille thatâ¦).
>>>
>>> I must say that It made the validation two times slower, fragile and
>>> led to the hiding of problems instead of solving them...
>>>
>>> -- Pavel
>>>
>>>>
>>>> As I said: this is a full time jobâ¦
>>>>
>>>> Marcus
>>>
>>
>
March 5, 2018
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Stephane Ducasse
On Mon, Mar 5, 2018 at 6:07 PM, Guillermo Polito <guillermopolito(a)gmail.com>
wrote:
> Yes and no. I think I kind of get it now from all comments... There are
> two problems together, one is how to reproduce the loading of a project (or
> getting a working version), and the other is how to use metacello also to
> manage the development of the project when the dependencies feel more like
> subprojects that may be edited altogether...
>
> On one side there is the reproducibility problem. I understand Stephan's
> and Nicolas' points. Using exact versions may block development. However, I
> see also that people in general have problems using semantic versioning and
> getting working versions done. This morning the image was broken because of
> wrong but "not fixed" dependencies... This afternoon Pablo was blocked
> executing the bootstrap because iceberg's and the image version did not
> match and Metacello was not the best friend when resolving a conflict on a
> package that did not exist on one of the two conflicting versions...
>
> So yes, it may block upgrades, but until we have tools that allow us to
> cope with the complexity, I prefer to have reproducible versions where I
> can reproduce bugs in a reproducible way than an unpredictable version
> where I cannot grasp the cause of a problem :/.
>
I understand the point of not hardcoding version but for the bootstrap I
think at reproducibility is key.
>
> On the other side, there is the fact that Metacello baselines are so far
> nice to describe release project dependencies, but they are not so nice to
> describe subprojects/development dependencies that may get edited along
> with the parent project. Kind of what we used to do with #bleedingEdge. I
> feel this is a complex problem, that not even SBT or maven
>
what is SBT and
how maven solves it?
> that are there since years are capable of solving nicely... Tode and
> Iceberg metacello integration try to solve this problem by "ignoring the
> dependency and using the loaded repository" but this may not be successful
> either...
>
> Now, pushing the complexity to how we manage the Pharo repository is not
> the solution either :)
>
> On Mon, Mar 5, 2018 at 5:51 PM, Nicolas Cellier <nicolas.cellier.aka.nice@
> gmail.com> wrote:
>
>> The well known problem with fixed configurations is dependencies:
>>
>> My project A version 1.2.3 depends on project C version 4.3 (semantic
>> versioning). I have tested it with 4.3.35, it works well...
>> If semantic versioning is correctly used, it should work with any 4.x.y
>> where x>=3.
>> There is another project B version 2.1.4 which depends on project C
>> version 4.4 (still semantic).
>>
>> Loading latest patch 4.4.20 should work for both A & B.
>> And even 4.6.11 which is the latest compatible version in 4.x serie
>>
>> IMO, the package ConfigurationOfPackageA and ConfigurationOfPackageB
>> should NOT specify the exact version of package C, but only the minimal
>> compatible version.
>> Then, if you want a reproducible image, that is up to the specific
>> assembly of package A and package B (let's call it
>> ConfigurationOfPackageAandBandC) that you should force the specific C
>> version.
>>
>> Isn't it the problem?
>>
>> 2018-03-05 17:17 GMT+01:00 Denis Kudriashov <dionisiydk(a)gmail.com>:
>>
>>> 2018-03-05 17:02 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>>>
>>>>
>>>> On Mon, Mar 5, 2018 at 4:51 PM, Guillermo Polito <
>>>> guillermopolito(a)gmail.com> wrote:
>>>>>
>>>>>
>>>>> I still do not understand... Also I do not understand your usage of
>>>>> the term "the merge". Can somebody give a **concrete** scenario?
>>>>>
>>>>> I'll try
>>>> For example the project MaterialDesignLite have two branches that are
>>>> always here:
>>>> - master
>>>> - development
>>>>
>>> Each commit on master is a stable release and end up with a tag as
>>>> "v1.2.2".
>>>>
>>>
>>> I do not agree with this sentence:
>>>
>>>
>>>> Since it's stable, BaselineOfMaterialDesignLite should depend only on
>>>> fixed version of the dependencies. For example it should depend on
>>>> MaterialDesignColor "v1.0.0".
>>>>
>>>
>>> Maybe I am wrong of course. But this is what I expect from semantic
>>> versioning:
>>>
>>> If I made project which uses some libraries I want to get latest fixes
>>> even in my stable version. This is what semantics versioning is about.
>>> Minor releases are supposed to be safe for dependent projects.
>>> It is of course question of trust to third parties. But if I do not
>>> trust them I should fork dependency and use it instead of original one.
>>>
>>> On the branch dev, we want to get the patches and possibly the minor
>>>> versions of the dependencies automatically. In the baseline we then want to
>>>> depend on MaterialDesignColor "v1.x.x". Thus, we follow the changes of
>>>> MaterialDesignColor while it's not a major release.
>>>> Because of this situation, BaselineOfMaterialDesignLite is different on
>>>> the two branches. Later, if I want to merge development into master in
>>>> order to release a new version, master will get the
>>>> BaselineOfMaterialDesignLite with semantic versionning dependencies instead
>>>> of the fixed dependencies. Before the release I'll need to change the
>>>> Baseline to get fix dependencies once again.
>>>> I hope I was clearer. :)
>>>>
>>>>
>>>>> When you release a version, please do not move that version. You
>>>>> should then create new versions, with new numbers and new code. But never
>>>>> touch old versions with old numbers and old code. Like that I can download
>>>>> the same old code using the same old number to get the old version whenever
>>>>> I want :).
>>>>>
>>>>> You can try to do it with branches, tags, different repositories, or
>>>>> even with zipfiles in mails. I don't care. Just don't modify releases and
>>>>> I'm happy with it.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> Cyril Ferlicot
>>>> https://ferlicot.fr
>>>>
>>>
>>>
>>
>
>
> --
>
>
>
> 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
> <http://www.cnrs.fr>*
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
March 5, 2018
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Guillermo Polito
Yes and no. I think I kind of get it now from all comments... There are two
problems together, one is how to reproduce the loading of a project (or
getting a working version), and the other is how to use metacello also to
manage the development of the project when the dependencies feel more like
subprojects that may be edited altogether...
On one side there is the reproducibility problem. I understand Stephan's
and Nicolas' points. Using exact versions may block development. However, I
see also that people in general have problems using semantic versioning and
getting working versions done. This morning the image was broken because of
wrong but "not fixed" dependencies... This afternoon Pablo was blocked
executing the bootstrap because iceberg's and the image version did not
match and Metacello was not the best friend when resolving a conflict on a
package that did not exist on one of the two conflicting versions...
So yes, it may block upgrades, but until we have tools that allow us to
cope with the complexity, I prefer to have reproducible versions where I
can reproduce bugs in a reproducible way than an unpredictable version
where I cannot grasp the cause of a problem :/.
On the other side, there is the fact that Metacello baselines are so far
nice to describe release project dependencies, but they are not so nice to
describe subprojects/development dependencies that may get edited along
with the parent project. Kind of what we used to do with #bleedingEdge. I
feel this is a complex problem, that not even SBT or maven that are there
since years are capable of solving nicely... Tode and Iceberg metacello
integration try to solve this problem by "ignoring the dependency and using
the loaded repository" but this may not be successful either...
Now, pushing the complexity to how we manage the Pharo repository is not
the solution either :)
On Mon, Mar 5, 2018 at 5:51 PM, Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com> wrote:
> The well known problem with fixed configurations is dependencies:
>
> My project A version 1.2.3 depends on project C version 4.3 (semantic
> versioning). I have tested it with 4.3.35, it works well...
> If semantic versioning is correctly used, it should work with any 4.x.y
> where x>=3.
> There is another project B version 2.1.4 which depends on project C
> version 4.4 (still semantic).
>
> Loading latest patch 4.4.20 should work for both A & B.
> And even 4.6.11 which is the latest compatible version in 4.x serie
>
> IMO, the package ConfigurationOfPackageA and ConfigurationOfPackageB
> should NOT specify the exact version of package C, but only the minimal
> compatible version.
> Then, if you want a reproducible image, that is up to the specific
> assembly of package A and package B (let's call it
> ConfigurationOfPackageAandBandC) that you should force the specific C
> version.
>
> Isn't it the problem?
>
> 2018-03-05 17:17 GMT+01:00 Denis Kudriashov <dionisiydk(a)gmail.com>:
>
>> 2018-03-05 17:02 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>>
>>>
>>> On Mon, Mar 5, 2018 at 4:51 PM, Guillermo Polito <
>>> guillermopolito(a)gmail.com> wrote:
>>>>
>>>>
>>>> I still do not understand... Also I do not understand your usage of the
>>>> term "the merge". Can somebody give a **concrete** scenario?
>>>>
>>>> I'll try
>>> For example the project MaterialDesignLite have two branches that are
>>> always here:
>>> - master
>>> - development
>>>
>> Each commit on master is a stable release and end up with a tag as
>>> "v1.2.2".
>>>
>>
>> I do not agree with this sentence:
>>
>>
>>> Since it's stable, BaselineOfMaterialDesignLite should depend only on
>>> fixed version of the dependencies. For example it should depend on
>>> MaterialDesignColor "v1.0.0".
>>>
>>
>> Maybe I am wrong of course. But this is what I expect from semantic
>> versioning:
>>
>> If I made project which uses some libraries I want to get latest fixes
>> even in my stable version. This is what semantics versioning is about.
>> Minor releases are supposed to be safe for dependent projects.
>> It is of course question of trust to third parties. But if I do not trust
>> them I should fork dependency and use it instead of original one.
>>
>> On the branch dev, we want to get the patches and possibly the minor
>>> versions of the dependencies automatically. In the baseline we then want to
>>> depend on MaterialDesignColor "v1.x.x". Thus, we follow the changes of
>>> MaterialDesignColor while it's not a major release.
>>> Because of this situation, BaselineOfMaterialDesignLite is different on
>>> the two branches. Later, if I want to merge development into master in
>>> order to release a new version, master will get the
>>> BaselineOfMaterialDesignLite with semantic versionning dependencies instead
>>> of the fixed dependencies. Before the release I'll need to change the
>>> Baseline to get fix dependencies once again.
>>> I hope I was clearer. :)
>>>
>>>
>>>> When you release a version, please do not move that version. You should
>>>> then create new versions, with new numbers and new code. But never touch
>>>> old versions with old numbers and old code. Like that I can download the
>>>> same old code using the same old number to get the old version whenever I
>>>> want :).
>>>>
>>>> You can try to do it with branches, tags, different repositories, or
>>>> even with zipfiles in mails. I don't care. Just don't modify releases and
>>>> I'm happy with it.
>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>> Cyril Ferlicot
>>> https://ferlicot.fr
>>>
>>
>>
>
--
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
<http://www.cnrs.fr>*
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
March 5, 2018
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Nicolas Cellier
The well known problem with fixed configurations is dependencies:
My project A version 1.2.3 depends on project C version 4.3 (semantic
versioning). I have tested it with 4.3.35, it works well...
If semantic versioning is correctly used, it should work with any 4.x.y
where x>=3.
There is another project B version 2.1.4 which depends on project C version
4.4 (still semantic).
Loading latest patch 4.4.20 should work for both A & B.
And even 4.6.11 which is the latest compatible version in 4.x serie
IMO, the package ConfigurationOfPackageA and ConfigurationOfPackageB should
NOT specify the exact version of package C, but only the minimal compatible
version.
Then, if you want a reproducible image, that is up to the specific assembly
of package A and package B (let's call it ConfigurationOfPackageAandBandC)
that you should force the specific C version.
Isn't it the problem?
2018-03-05 17:17 GMT+01:00 Denis Kudriashov <dionisiydk(a)gmail.com>:
> 2018-03-05 17:02 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>
>>
>> On Mon, Mar 5, 2018 at 4:51 PM, Guillermo Polito <
>> guillermopolito(a)gmail.com> wrote:
>>>
>>>
>>> I still do not understand... Also I do not understand your usage of the
>>> term "the merge". Can somebody give a **concrete** scenario?
>>>
>>> I'll try
>> For example the project MaterialDesignLite have two branches that are
>> always here:
>> - master
>> - development
>>
> Each commit on master is a stable release and end up with a tag as
>> "v1.2.2".
>>
>
> I do not agree with this sentence:
>
>
>> Since it's stable, BaselineOfMaterialDesignLite should depend only on
>> fixed version of the dependencies. For example it should depend on
>> MaterialDesignColor "v1.0.0".
>>
>
> Maybe I am wrong of course. But this is what I expect from semantic
> versioning:
>
> If I made project which uses some libraries I want to get latest fixes
> even in my stable version. This is what semantics versioning is about.
> Minor releases are supposed to be safe for dependent projects.
> It is of course question of trust to third parties. But if I do not trust
> them I should fork dependency and use it instead of original one.
>
> On the branch dev, we want to get the patches and possibly the minor
>> versions of the dependencies automatically. In the baseline we then want to
>> depend on MaterialDesignColor "v1.x.x". Thus, we follow the changes of
>> MaterialDesignColor while it's not a major release.
>> Because of this situation, BaselineOfMaterialDesignLite is different on
>> the two branches. Later, if I want to merge development into master in
>> order to release a new version, master will get the
>> BaselineOfMaterialDesignLite with semantic versionning dependencies instead
>> of the fixed dependencies. Before the release I'll need to change the
>> Baseline to get fix dependencies once again.
>> I hope I was clearer. :)
>>
>>
>>> When you release a version, please do not move that version. You should
>>> then create new versions, with new numbers and new code. But never touch
>>> old versions with old numbers and old code. Like that I can download the
>>> same old code using the same old number to get the old version whenever I
>>> want :).
>>>
>>> You can try to do it with branches, tags, different repositories, or
>>> even with zipfiles in mails. I don't care. Just don't modify releases and
>>> I'm happy with it.
>>>
>>>
>>>
>>>
>>
>> --
>> Cyril Ferlicot
>> https://ferlicot.fr
>>
>
>
March 5, 2018
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Stephan Eggermont
tesonep(a)gmail.com
<tesonep(a)gmail.com> wrote:
> Hello,
> i have seen in the latest version of Pharo baselines pointing to
> "floating" versions. A version that is not fixed. I want to know why this
> is like that?
Because that is the way it should be? It is hand-edited, so repeatable
builds are not the goal, just working software. Repeatable builds come from
recording what you loaded in what order. Repeatable builds with fixed
dependency versions don't help you with working software, as they block
your dependencies from getting patched. Never depend on hard-coded versions
of anything you don't control yourself. See the 5D paper
Stephan Eggermont
March 5, 2018
Re: [Pharo-dev] Pharo6 with Ubuntu and OSSubprocess/threaded heartbeat crashes and problems
by Sabine Manaa
Hi Mariano and Thierry,
I load on Pharo 32 bit with:
spec
baseline: 'OSSubprocess'
with: [ spec
className: 'BaselineOfOSSubprocess';
repository: 'github://marianopeck/OSSubprocess:v0.2.5/repository' ];
import: 'OSSubprocess'
Tomorrow I will try to load on Pharo7 and try to use OSProcess and see if
it still crashes.
Sabine
2018-03-05 17:23 GMT+01:00 Mariano Martinez Peck <marianopeck(a)gmail.com>:
> Hi Sabine,
>
> Which OSSubprocess version are you using? If are using ConfigurationOf to
> load it, then please tell me which version from there.
> If you are using from baseline, tell me if you are grabbing master, a
> given tag , a given commit, etc.
> I will assume it is Pharo 32 bits rigth?
>
> I will continue with a more detailed answer once you get back to me with
> above questions.
>
> Cheers,
>
>
>
>
> On Mon, Mar 5, 2018 at 1:14 PM, Sabine Manaa <manaa.sabine(a)gmail.com>
> wrote:
>
>> Hi Alistair,
>>
>> thank you! The message (pthread_setschedparam failed: Operation not
>> permitted) is gone now. So Question 1 is solved.
>>
>> But the crashes (Question 2) are remaining. After calling several
>> OSSubprocess commands, Pharo crashes without PharoDebug.log.
>>
>> Anyone having an Idea what I could do?
>>
>> Sabine
>>
>>
>>
>>
>> 2018-03-05 13:07 GMT+01:00 Alistair Grant <akgrant0710(a)gmail.com>:
>>
>>> Hi Sabine,
>>>
>>> The docket container will need to be privileged to adjust thread
>>> priority.
>>>
>>>
>>> Cheers,
>>> Alistair
>>> (on phone)
>>>
>>> On 5 Mar. 2018 12:44, "Sabine Manaa" <manaa.sabine(a)gmail.com> wrote:
>>>
>>> We want to run Pharo6 with Ubuntu 16.04 Linux (in a Docker Image) and use
>>> OSSubprocess.
>>>
>>> For this, we use this vm: https://get.pharo.org/61+vmT
>>>
>>> [1] tells me: "If you are installing under Linux, then you must use a
>>> threaded heartbeat VM"
>>>
>>> We also created a file /etc/security/limits.d/pharo.conf and put the
>>> parameters in like described in the message [2] when startup. Also we log
>>> out and in.
>>>
>>> Question 1: the message (pthread_setschedparam failed: Operation not
>>> permitted) comes again to the console each time we use OSSubprocess. As
>>> far
>>> as I understand, it should disappear. Does this mean, that we did not
>>> edit
>>> the pharo.conf correctly?
>>>
>>> Question 2: after several uses of OSSubprocess within our application,
>>> Pharo
>>> crashes (no PharoDebug.log) with the following messages [3].
>>> How can we avoid this, what are we doing wrong?
>>>
>>> Question 3: sometimes (!) when we load (exactly the same code loaded
>>> with a
>>> script), we also get a crash, see [4]. Bug? wrong vm?
>>>
>>> I am unhappy with this and it takes a lot of time. What are we doing
>>> wrong?
>>> We want to run Pharo6 with OSSubprocess in Linux within a docker image
>>> for
>>> our staging environment.
>>>
>>> Help very welcome :-)
>>> Sabine
>>>
>>>
>>> [1]https://github.com/marianopeck/OSSubprocess
>>> [2](https://github.com/OpenSmalltalk/opensmalltalk-vm/releas
>>> es/tag/r3732#linux)
>>>
>>> [3]crash message
>>> *** buffer overflow detected ***:
>>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo terminated
>>> ======= Backtrace: =========
>>> /lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf75f3377]
>>> /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x68)[0xf7683708]
>>> /lib/i386-linux-gnu/libc.so.6(+0xf58f8)[0xf76818f8]
>>> /lib/i386-linux-gnu/libc.so.6(+0xf75fa)[0xf76835fa]
>>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo(aioEnab
>>> le+0x31)[0x80c9811]
>>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo[0x81215ee]
>>> [0xa1010e0]
>>> [0xa1c2bb8]
>>> [0xa15f50c]
>>> ....a lot more
>>>
>>>
>>>
>>> [4] PharoDebug.log
>>> HERE_BE_DRAGONS_HERE
>>> KeyNotFound: key #arg1 not found in Dictionary
>>> 5 March 2018 11:31:51.792142 am
>>>
>>> VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2254 uuid:
>>> 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
>>> StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid:
>>> 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
>>> VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>>> Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942
>>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>>>
>>> Image: Pharo6.0 [Latest update: #60536]
>>>
>>> Dictionary>>errorKeyNotFound:
>>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>>> Arguments and temporary variables:
>>> aKey: #arg1
>>> Receiver's instance variables:
>>> tally: 2
>>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>>
>>>
>>> [ self errorKeyNotFound: key ] in Dictionary>>at:
>>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>>> Arguments and temporary variables:
>>> key: #arg1
>>> Receiver's instance variables:
>>> tally: 2
>>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>>
>>>
>>> Dictionary>>at:ifAbsent:
>>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>>> Arguments and temporary variables:
>>> arg1: #arg1
>>> arg2: [ self errorKeyNotFound: key ]
>>> tmp1: nil
>>> Receiver's instance variables:
>>> tally: 2
>>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>>
>>>
>>> Dictionary>>at:
>>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>>> Arguments and temporary variables:
>>> key: #arg1
>>> Receiver's instance variables:
>>> tally: 2
>>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>>
>>>
>>> IRPushClosureCopy>>indexForVarNamed:
>>> Receiver: pushClosureCopyCopiedValues: #() args: #(#arg3)
>>> Arguments and temporary variables:
>>> aName: #arg1
>>> Receiver's instance variables:
>>> sourceNode: RBBlockNode([ :arg3 |
>>> | tmp2 |
>>> tmp2 := arg3.
>>> tmp2
>>> nextPutAll: arg...etc...
>>> bytecodeIndex: nil
>>> sequence: an IRSequence (1)
>>> destination: an IRSequence (3)
>>> successor: nil
>>> numArgs: nil
>>> blockSequence: an IRSequence (2)
>>> tempMap: a Dictionary(#arg3->1 #tmp2->2 )
>>> copiedValues: #()
>>> lastBlockSequence: an IRSequence (2)
>>> arguments: #(#arg3)
>>>
>>>
>>> IRTranslatorV2>>visitPushTemp:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> tmp: pushTemp: #arg1
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRPushTemp>>accept:
>>> Receiver: pushTemp: #arg1
>>> Arguments and temporary variables:
>>> aVisitor: an IRTranslatorV2
>>> Receiver's instance variables:
>>> sourceNode: RBArgumentNode(arg1)
>>> bytecodeIndex: nil
>>> sequence: an IRSequence (2)
>>> name: #arg1
>>>
>>>
>>> IRTranslatorV2(IRVisitor)>>visitNode:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> elem: pushTemp: #arg1
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRTranslatorV2>>visitInstruction:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> instr: pushTemp: #arg1
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> [ :arg2 | self visitInstruction: arg2 ] in
>>> IRTranslatorV2(IRVisitor)>>visitSequence:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> arg1: an IRSequence (2)
>>> arg2: pushTemp: #arg1
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> OrderedCollection>>do:
>>> Receiver: an OrderedCollection(pushTemp: #arg3 popIntoTemp:
>>> #tmp2 pushTemp:
>>> #tmp2 pushDup pushTemp: ...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> array: an Array(pushTemp: #arg3 popIntoTemp: #tmp2
>>> pushTemp: #tmp2
>>> pushDup push...etc...
>>> firstIndex: 1
>>> lastIndex: 25
>>>
>>>
>>> IRSequence>>do:
>>> Receiver: an IRSequence (2)
>>> Arguments and temporary variables:
>>> aBlock: [ :arg2 | self visitInstruction: arg2 ]
>>> Receiver's instance variables:
>>> sequence: an OrderedCollection(pushTemp: #arg3
>>> popIntoTemp: #tmp2
>>> pushTemp: #tm...etc...
>>> orderNumber: 2
>>> method: an IRMethod
>>>
>>>
>>> IRTranslatorV2(IRVisitor)>>visitSequence:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> arg1: an IRSequence (2)
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRTranslatorV2>>visitSequence:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> instructionSequence: an IRSequence (2)
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRSequence>>accept:
>>> Receiver: an IRSequence (2)
>>> Arguments and temporary variables:
>>> aVisitor: an IRTranslatorV2
>>> Receiver's instance variables:
>>> sequence: an OrderedCollection(pushTemp: #arg3
>>> popIntoTemp: #tmp2
>>> pushTemp: #tm...etc...
>>> orderNumber: 2
>>> method: an IRMethod
>>>
>>>
>>> IRTranslatorV2(IRVisitor)>>visitNode:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> elem: an IRSequence (2)
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> [ :arg2 | self visitNode: arg2 ] in IRTranslatorV2(IRVisitor)>>vis
>>> itNodes:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> arg1: a SortedCollection(an IRSequence (1) an
>>> IRSequence (2) an
>>> IRSequence (3) ...etc...
>>> arg2: an IRSequence (2)
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> SortedCollection(OrderedCollection)>>do:
>>> Receiver: a SortedCollection(an IRSequence (1) an IRSequence (2)
>>> an
>>> IRSequence (3) an IRSequence (4)...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> array: an Array(an IRSequence (1) an IRSequence (2) an
>>> IRSequence (3) an
>>> IRSequ...etc...
>>> firstIndex: 1
>>> lastIndex: 7
>>> sortBlock: [ :arg2 :arg3 | arg2 orderNumber <= arg3
>>> orderNumber ]
>>>
>>>
>>> IRTranslatorV2(IRVisitor)>>visitNodes:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> arg1: a SortedCollection(an IRSequence (1) an
>>> IRSequence (2) an
>>> IRSequence (3) ...etc...
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRTranslatorV2>>visitSequences:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> arg1: a SortedCollection(an IRSequence (1) an
>>> IRSequence (2) an
>>> IRSequence (3) ...etc...
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRTranslatorV2>>visitMethod:
>>> Receiver: an IRTranslatorV2
>>> Arguments and temporary variables:
>>> anIr: an IRMethod
>>> Receiver's instance variables:
>>> gen: an IRBytecodeGenerator
>>> currentScope: a Stack(pushClosureCopyCopiedValues:
>>> #() args: #(#arg3) an
>>> IRMeth...etc...
>>> trailer: a CompiledMethodTrailer
>>> tempVectorStack: a Stack()
>>> compilationContext: a CompilationContext
>>>
>>>
>>> IRMethod>>accept:
>>> Receiver: an IRMethod
>>> Arguments and temporary variables:
>>> aVisitor: an IRTranslatorV2
>>> Receiver's instance variables:
>>> sourceNode: logError: arg1 inContext: arg2
>>> self
>>> logStdErrorDuring: [ :arg3 |...etc...
>>> startSequence: an IRSequence (1)
>>> numArgs: 2
>>> properties: nil
>>> tempMap: a Dictionary(#arg1->1 #arg2->2 )
>>> pragmas: an OrderedCollection()
>>> additionalLiterals: an OCLiteralSet(#ifNotNil:)
>>> compiledMethod: nil
>>> compilationContext: a CompilationContext
>>> irPrimitive: primitive 0
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.ht
>>> ml
>>>
>>>
>>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
March 5, 2018
Re: [Pharo-dev] Pharo6 with Ubuntu and OSSubprocess/threaded heartbeat crashes and problems
by Mariano Martinez Peck
Hi Sabine,
Which OSSubprocess version are you using? If are using ConfigurationOf to
load it, then please tell me which version from there.
If you are using from baseline, tell me if you are grabbing master, a given
tag , a given commit, etc.
I will assume it is Pharo 32 bits rigth?
I will continue with a more detailed answer once you get back to me with
above questions.
Cheers,
On Mon, Mar 5, 2018 at 1:14 PM, Sabine Manaa <manaa.sabine(a)gmail.com> wrote:
> Hi Alistair,
>
> thank you! The message (pthread_setschedparam failed: Operation not
> permitted) is gone now. So Question 1 is solved.
>
> But the crashes (Question 2) are remaining. After calling several
> OSSubprocess commands, Pharo crashes without PharoDebug.log.
>
> Anyone having an Idea what I could do?
>
> Sabine
>
>
>
>
> 2018-03-05 13:07 GMT+01:00 Alistair Grant <akgrant0710(a)gmail.com>:
>
>> Hi Sabine,
>>
>> The docket container will need to be privileged to adjust thread priority.
>>
>>
>> Cheers,
>> Alistair
>> (on phone)
>>
>> On 5 Mar. 2018 12:44, "Sabine Manaa" <manaa.sabine(a)gmail.com> wrote:
>>
>> We want to run Pharo6 with Ubuntu 16.04 Linux (in a Docker Image) and use
>> OSSubprocess.
>>
>> For this, we use this vm: https://get.pharo.org/61+vmT
>>
>> [1] tells me: "If you are installing under Linux, then you must use a
>> threaded heartbeat VM"
>>
>> We also created a file /etc/security/limits.d/pharo.conf and put the
>> parameters in like described in the message [2] when startup. Also we log
>> out and in.
>>
>> Question 1: the message (pthread_setschedparam failed: Operation not
>> permitted) comes again to the console each time we use OSSubprocess. As
>> far
>> as I understand, it should disappear. Does this mean, that we did not edit
>> the pharo.conf correctly?
>>
>> Question 2: after several uses of OSSubprocess within our application,
>> Pharo
>> crashes (no PharoDebug.log) with the following messages [3].
>> How can we avoid this, what are we doing wrong?
>>
>> Question 3: sometimes (!) when we load (exactly the same code loaded with
>> a
>> script), we also get a crash, see [4]. Bug? wrong vm?
>>
>> I am unhappy with this and it takes a lot of time. What are we doing
>> wrong?
>> We want to run Pharo6 with OSSubprocess in Linux within a docker image for
>> our staging environment.
>>
>> Help very welcome :-)
>> Sabine
>>
>>
>> [1]https://github.com/marianopeck/OSSubprocess
>> [2](https://github.com/OpenSmalltalk/opensmalltalk-vm/releas
>> es/tag/r3732#linux)
>>
>> [3]crash message
>> *** buffer overflow detected ***:
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo terminated
>> ======= Backtrace: =========
>> /lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf75f3377]
>> /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x68)[0xf7683708]
>> /lib/i386-linux-gnu/libc.so.6(+0xf58f8)[0xf76818f8]
>> /lib/i386-linux-gnu/libc.so.6(+0xf75fa)[0xf76835fa]
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo(aioEnab
>> le+0x31)[0x80c9811]
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo[0x81215ee]
>> [0xa1010e0]
>> [0xa1c2bb8]
>> [0xa15f50c]
>> ....a lot more
>>
>>
>>
>> [4] PharoDebug.log
>> HERE_BE_DRAGONS_HERE
>> KeyNotFound: key #arg1 not found in Dictionary
>> 5 March 2018 11:31:51.792142 am
>>
>> VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2254 uuid:
>> 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
>> StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid:
>> 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
>> VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>> Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>>
>> Image: Pharo6.0 [Latest update: #60536]
>>
>> Dictionary>>errorKeyNotFound:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> aKey: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> [ self errorKeyNotFound: key ] in Dictionary>>at:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> key: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> Dictionary>>at:ifAbsent:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> arg1: #arg1
>> arg2: [ self errorKeyNotFound: key ]
>> tmp1: nil
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> Dictionary>>at:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> key: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> IRPushClosureCopy>>indexForVarNamed:
>> Receiver: pushClosureCopyCopiedValues: #() args: #(#arg3)
>> Arguments and temporary variables:
>> aName: #arg1
>> Receiver's instance variables:
>> sourceNode: RBBlockNode([ :arg3 |
>> | tmp2 |
>> tmp2 := arg3.
>> tmp2
>> nextPutAll: arg...etc...
>> bytecodeIndex: nil
>> sequence: an IRSequence (1)
>> destination: an IRSequence (3)
>> successor: nil
>> numArgs: nil
>> blockSequence: an IRSequence (2)
>> tempMap: a Dictionary(#arg3->1 #tmp2->2 )
>> copiedValues: #()
>> lastBlockSequence: an IRSequence (2)
>> arguments: #(#arg3)
>>
>>
>> IRTranslatorV2>>visitPushTemp:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> tmp: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRPushTemp>>accept:
>> Receiver: pushTemp: #arg1
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sourceNode: RBArgumentNode(arg1)
>> bytecodeIndex: nil
>> sequence: an IRSequence (2)
>> name: #arg1
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNode:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> elem: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitInstruction:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> instr: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> [ :arg2 | self visitInstruction: arg2 ] in
>> IRTranslatorV2(IRVisitor)>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: an IRSequence (2)
>> arg2: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> OrderedCollection>>do:
>> Receiver: an OrderedCollection(pushTemp: #arg3 popIntoTemp: #tmp2
>> pushTemp:
>> #tmp2 pushDup pushTemp: ...etc...
>> Arguments and temporary variables:
>> <<error during printing>
>> Receiver's instance variables:
>> array: an Array(pushTemp: #arg3 popIntoTemp: #tmp2
>> pushTemp: #tmp2
>> pushDup push...etc...
>> firstIndex: 1
>> lastIndex: 25
>>
>>
>> IRSequence>>do:
>> Receiver: an IRSequence (2)
>> Arguments and temporary variables:
>> aBlock: [ :arg2 | self visitInstruction: arg2 ]
>> Receiver's instance variables:
>> sequence: an OrderedCollection(pushTemp: #arg3
>> popIntoTemp: #tmp2
>> pushTemp: #tm...etc...
>> orderNumber: 2
>> method: an IRMethod
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> instructionSequence: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRSequence>>accept:
>> Receiver: an IRSequence (2)
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sequence: an OrderedCollection(pushTemp: #arg3
>> popIntoTemp: #tmp2
>> pushTemp: #tm...etc...
>> orderNumber: 2
>> method: an IRMethod
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNode:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> elem: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> [ :arg2 | self visitNode: arg2 ] in IRTranslatorV2(IRVisitor)>>vis
>> itNodes:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an
>> IRSequence (2) an
>> IRSequence (3) ...etc...
>> arg2: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> SortedCollection(OrderedCollection)>>do:
>> Receiver: a SortedCollection(an IRSequence (1) an IRSequence (2)
>> an
>> IRSequence (3) an IRSequence (4)...etc...
>> Arguments and temporary variables:
>> <<error during printing>
>> Receiver's instance variables:
>> array: an Array(an IRSequence (1) an IRSequence (2) an
>> IRSequence (3) an
>> IRSequ...etc...
>> firstIndex: 1
>> lastIndex: 7
>> sortBlock: [ :arg2 :arg3 | arg2 orderNumber <= arg3
>> orderNumber ]
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNodes:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an
>> IRSequence (2) an
>> IRSequence (3) ...etc...
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitSequences:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an
>> IRSequence (2) an
>> IRSequence (3) ...etc...
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitMethod:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> anIr: an IRMethod
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRMethod>>accept:
>> Receiver: an IRMethod
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sourceNode: logError: arg1 inContext: arg2
>> self
>> logStdErrorDuring: [ :arg3 |...etc...
>> startSequence: an IRSequence (1)
>> numArgs: 2
>> properties: nil
>> tempMap: a Dictionary(#arg1->1 #arg2->2 )
>> pragmas: an OrderedCollection()
>> additionalLiterals: an OCLiteralSet(#ifNotNil:)
>> compiledMethod: nil
>> compilationContext: a CompilationContext
>> irPrimitive: primitive 0
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>>
>>
>>
>
--
Mariano
http://marianopeck.wordpress.com
March 5, 2018
Re: [Pharo-dev] Pharo6 with Ubuntu and OSSubprocess/threaded heartbeat crashes and problems
by Thierry Goubier
Hi Sabine,
2018-03-05 17:14 GMT+01:00 Sabine Manaa <manaa.sabine(a)gmail.com>:
> Hi Alistair,
>
> thank you! The message (pthread_setschedparam failed: Operation not
> permitted) is gone now. So Question 1 is solved.
>
> But the crashes (Question 2) are remaining. After calling several
> OSSubprocess commands, Pharo crashes without PharoDebug.log.
>
> Anyone having an Idea what I could do?
I can suggest two options:
- Trying with OSProcess to see if you still get the crash or not
(unless your code requires too much refactoring; mine carries around
both code and can run on both OSProcess or OSSubprocess, with
automatic detection of which one is loaded previously in the
Baseline).
- Trying with the Pharo 7 vm instead of the 61 vm. Switching to the 7
vm solved issues on 64 bits at a point.
Regards,
Thierry
>
> Sabine
>
>
>
>
> 2018-03-05 13:07 GMT+01:00 Alistair Grant <akgrant0710(a)gmail.com>:
>>
>> Hi Sabine,
>>
>> The docket container will need to be privileged to adjust thread priority.
>>
>>
>> Cheers,
>> Alistair
>> (on phone)
>>
>> On 5 Mar. 2018 12:44, "Sabine Manaa" <manaa.sabine(a)gmail.com> wrote:
>>
>> We want to run Pharo6 with Ubuntu 16.04 Linux (in a Docker Image) and use
>> OSSubprocess.
>>
>> For this, we use this vm: https://get.pharo.org/61+vmT
>>
>> [1] tells me: "If you are installing under Linux, then you must use a
>> threaded heartbeat VM"
>>
>> We also created a file /etc/security/limits.d/pharo.conf and put the
>> parameters in like described in the message [2] when startup. Also we log
>> out and in.
>>
>> Question 1: the message (pthread_setschedparam failed: Operation not
>> permitted) comes again to the console each time we use OSSubprocess. As
>> far
>> as I understand, it should disappear. Does this mean, that we did not edit
>> the pharo.conf correctly?
>>
>> Question 2: after several uses of OSSubprocess within our application,
>> Pharo
>> crashes (no PharoDebug.log) with the following messages [3].
>> How can we avoid this, what are we doing wrong?
>>
>> Question 3: sometimes (!) when we load (exactly the same code loaded with
>> a
>> script), we also get a crash, see [4]. Bug? wrong vm?
>>
>> I am unhappy with this and it takes a lot of time. What are we doing
>> wrong?
>> We want to run Pharo6 with OSSubprocess in Linux within a docker image for
>> our staging environment.
>>
>> Help very welcome :-)
>> Sabine
>>
>>
>> [1]https://github.com/marianopeck/OSSubprocess
>>
>> [2](https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#lin…
>>
>> [3]crash message
>> *** buffer overflow detected ***:
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo terminated
>> ======= Backtrace: =========
>> /lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf75f3377]
>> /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x68)[0xf7683708]
>> /lib/i386-linux-gnu/libc.so.6(+0xf58f8)[0xf76818f8]
>> /lib/i386-linux-gnu/libc.so.6(+0xf75fa)[0xf76835fa]
>>
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo(aioEnable+0x31)[0x80c9811]
>> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo[0x81215ee]
>> [0xa1010e0]
>> [0xa1c2bb8]
>> [0xa15f50c]
>> ....a lot more
>>
>>
>>
>> [4] PharoDebug.log
>> HERE_BE_DRAGONS_HERE
>> KeyNotFound: key #arg1 not found in Dictionary
>> 5 March 2018 11:31:51.792142 am
>>
>> VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2254 uuid:
>> 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
>> StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid:
>> 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
>> VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>> Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>>
>> Image: Pharo6.0 [Latest update: #60536]
>>
>> Dictionary>>errorKeyNotFound:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> aKey: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> [ self errorKeyNotFound: key ] in Dictionary>>at:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> key: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> Dictionary>>at:ifAbsent:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> arg1: #arg1
>> arg2: [ self errorKeyNotFound: key ]
>> tmp1: nil
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> Dictionary>>at:
>> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
>> Arguments and temporary variables:
>> key: #arg1
>> Receiver's instance variables:
>> tally: 2
>> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>>
>>
>> IRPushClosureCopy>>indexForVarNamed:
>> Receiver: pushClosureCopyCopiedValues: #() args: #(#arg3)
>> Arguments and temporary variables:
>> aName: #arg1
>> Receiver's instance variables:
>> sourceNode: RBBlockNode([ :arg3 |
>> | tmp2 |
>> tmp2 := arg3.
>> tmp2
>> nextPutAll: arg...etc...
>> bytecodeIndex: nil
>> sequence: an IRSequence (1)
>> destination: an IRSequence (3)
>> successor: nil
>> numArgs: nil
>> blockSequence: an IRSequence (2)
>> tempMap: a Dictionary(#arg3->1 #tmp2->2 )
>> copiedValues: #()
>> lastBlockSequence: an IRSequence (2)
>> arguments: #(#arg3)
>>
>>
>> IRTranslatorV2>>visitPushTemp:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> tmp: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRPushTemp>>accept:
>> Receiver: pushTemp: #arg1
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sourceNode: RBArgumentNode(arg1)
>> bytecodeIndex: nil
>> sequence: an IRSequence (2)
>> name: #arg1
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNode:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> elem: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitInstruction:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> instr: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> [ :arg2 | self visitInstruction: arg2 ] in
>> IRTranslatorV2(IRVisitor)>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: an IRSequence (2)
>> arg2: pushTemp: #arg1
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> OrderedCollection>>do:
>> Receiver: an OrderedCollection(pushTemp: #arg3 popIntoTemp: #tmp2
>> pushTemp:
>> #tmp2 pushDup pushTemp: ...etc...
>> Arguments and temporary variables:
>> <<error during printing>
>> Receiver's instance variables:
>> array: an Array(pushTemp: #arg3 popIntoTemp: #tmp2
>> pushTemp: #tmp2
>> pushDup push...etc...
>> firstIndex: 1
>> lastIndex: 25
>>
>>
>> IRSequence>>do:
>> Receiver: an IRSequence (2)
>> Arguments and temporary variables:
>> aBlock: [ :arg2 | self visitInstruction: arg2 ]
>> Receiver's instance variables:
>> sequence: an OrderedCollection(pushTemp: #arg3
>> popIntoTemp: #tmp2
>> pushTemp: #tm...etc...
>> orderNumber: 2
>> method: an IRMethod
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitSequence:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> instructionSequence: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRSequence>>accept:
>> Receiver: an IRSequence (2)
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sequence: an OrderedCollection(pushTemp: #arg3
>> popIntoTemp: #tmp2
>> pushTemp: #tm...etc...
>> orderNumber: 2
>> method: an IRMethod
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNode:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> elem: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> [ :arg2 | self visitNode: arg2 ] in IRTranslatorV2(IRVisitor)>>visitNodes:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an IRSequence
>> (2) an
>> IRSequence (3) ...etc...
>> arg2: an IRSequence (2)
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> SortedCollection(OrderedCollection)>>do:
>> Receiver: a SortedCollection(an IRSequence (1) an IRSequence (2)
>> an
>> IRSequence (3) an IRSequence (4)...etc...
>> Arguments and temporary variables:
>> <<error during printing>
>> Receiver's instance variables:
>> array: an Array(an IRSequence (1) an IRSequence (2) an
>> IRSequence (3) an
>> IRSequ...etc...
>> firstIndex: 1
>> lastIndex: 7
>> sortBlock: [ :arg2 :arg3 | arg2 orderNumber <= arg3
>> orderNumber ]
>>
>>
>> IRTranslatorV2(IRVisitor)>>visitNodes:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an IRSequence
>> (2) an
>> IRSequence (3) ...etc...
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitSequences:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> arg1: a SortedCollection(an IRSequence (1) an IRSequence
>> (2) an
>> IRSequence (3) ...etc...
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRTranslatorV2>>visitMethod:
>> Receiver: an IRTranslatorV2
>> Arguments and temporary variables:
>> anIr: an IRMethod
>> Receiver's instance variables:
>> gen: an IRBytecodeGenerator
>> currentScope: a Stack(pushClosureCopyCopiedValues: #()
>> args: #(#arg3) an
>> IRMeth...etc...
>> trailer: a CompiledMethodTrailer
>> tempVectorStack: a Stack()
>> compilationContext: a CompilationContext
>>
>>
>> IRMethod>>accept:
>> Receiver: an IRMethod
>> Arguments and temporary variables:
>> aVisitor: an IRTranslatorV2
>> Receiver's instance variables:
>> sourceNode: logError: arg1 inContext: arg2
>> self
>> logStdErrorDuring: [ :arg3 |...etc...
>> startSequence: an IRSequence (1)
>> numArgs: 2
>> properties: nil
>> tempMap: a Dictionary(#arg1->1 #arg2->2 )
>> pragmas: an OrderedCollection()
>> additionalLiterals: an OCLiteralSet(#ifNotNil:)
>> compiledMethod: nil
>> compilationContext: a CompilationContext
>> irPrimitive: primitive 0
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>>
>>
>
March 5, 2018
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Denis Kudriashov
2018-03-05 17:02 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>
> On Mon, Mar 5, 2018 at 4:51 PM, Guillermo Polito <
> guillermopolito(a)gmail.com> wrote:
>>
>>
>> I still do not understand... Also I do not understand your usage of the
>> term "the merge". Can somebody give a **concrete** scenario?
>>
>> I'll try
> For example the project MaterialDesignLite have two branches that are
> always here:
> - master
> - development
>
Each commit on master is a stable release and end up with a tag as
> "v1.2.2".
>
I do not agree with this sentence:
> Since it's stable, BaselineOfMaterialDesignLite should depend only on
> fixed version of the dependencies. For example it should depend on
> MaterialDesignColor "v1.0.0".
>
Maybe I am wrong of course. But this is what I expect from semantic
versioning:
If I made project which uses some libraries I want to get latest fixes even
in my stable version. This is what semantics versioning is about. Minor
releases are supposed to be safe for dependent projects.
It is of course question of trust to third parties. But if I do not trust
them I should fork dependency and use it instead of original one.
On the branch dev, we want to get the patches and possibly the minor
> versions of the dependencies automatically. In the baseline we then want to
> depend on MaterialDesignColor "v1.x.x". Thus, we follow the changes of
> MaterialDesignColor while it's not a major release.
> Because of this situation, BaselineOfMaterialDesignLite is different on
> the two branches. Later, if I want to merge development into master in
> order to release a new version, master will get the
> BaselineOfMaterialDesignLite with semantic versionning dependencies instead
> of the fixed dependencies. Before the release I'll need to change the
> Baseline to get fix dependencies once again.
> I hope I was clearer. :)
>
>
>> When you release a version, please do not move that version. You should
>> then create new versions, with new numbers and new code. But never touch
>> old versions with old numbers and old code. Like that I can download the
>> same old code using the same old number to get the old version whenever I
>> want :).
>>
>> You can try to do it with branches, tags, different repositories, or even
>> with zipfiles in mails. I don't care. Just don't modify releases and I'm
>> happy with it.
>>
>>
>>
>>
>
> --
> Cyril Ferlicot
> https://ferlicot.fr
>
March 5, 2018
Re: [Pharo-dev] Pharo6 with Ubuntu and OSSubprocess/threaded heartbeat crashes and problems
by Sabine Manaa
Hi Alistair,
thank you! The message (pthread_setschedparam failed: Operation not
permitted) is gone now. So Question 1 is solved.
But the crashes (Question 2) are remaining. After calling several
OSSubprocess commands, Pharo crashes without PharoDebug.log.
Anyone having an Idea what I could do?
Sabine
2018-03-05 13:07 GMT+01:00 Alistair Grant <akgrant0710(a)gmail.com>:
> Hi Sabine,
>
> The docket container will need to be privileged to adjust thread priority.
>
>
> Cheers,
> Alistair
> (on phone)
>
> On 5 Mar. 2018 12:44, "Sabine Manaa" <manaa.sabine(a)gmail.com> wrote:
>
> We want to run Pharo6 with Ubuntu 16.04 Linux (in a Docker Image) and use
> OSSubprocess.
>
> For this, we use this vm: https://get.pharo.org/61+vmT
>
> [1] tells me: "If you are installing under Linux, then you must use a
> threaded heartbeat VM"
>
> We also created a file /etc/security/limits.d/pharo.conf and put the
> parameters in like described in the message [2] when startup. Also we log
> out and in.
>
> Question 1: the message (pthread_setschedparam failed: Operation not
> permitted) comes again to the console each time we use OSSubprocess. As far
> as I understand, it should disappear. Does this mean, that we did not edit
> the pharo.conf correctly?
>
> Question 2: after several uses of OSSubprocess within our application,
> Pharo
> crashes (no PharoDebug.log) with the following messages [3].
> How can we avoid this, what are we doing wrong?
>
> Question 3: sometimes (!) when we load (exactly the same code loaded with a
> script), we also get a crash, see [4]. Bug? wrong vm?
>
> I am unhappy with this and it takes a lot of time. What are we doing wrong?
> We want to run Pharo6 with OSSubprocess in Linux within a docker image for
> our staging environment.
>
> Help very welcome :-)
> Sabine
>
>
> [1]https://github.com/marianopeck/OSSubprocess
> [2](https://github.com/OpenSmalltalk/opensmalltalk-vm/
> releases/tag/r3732#linux)
>
> [3]crash message
> *** buffer overflow detected ***:
> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo terminated
> ======= Backtrace: =========
> /lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf75f3377]
> /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x68)[0xf7683708]
> /lib/i386-linux-gnu/libc.so.6(+0xf58f8)[0xf76818f8]
> /lib/i386-linux-gnu/libc.so.6(+0xf75fa)[0xf76835fa]
> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo(aioEnab
> le+0x31)[0x80c9811]
> /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo[0x81215ee]
> [0xa1010e0]
> [0xa1c2bb8]
> [0xa15f50c]
> ....a lot more
>
>
>
> [4] PharoDebug.log
> HERE_BE_DRAGONS_HERE
> KeyNotFound: key #arg1 not found in Dictionary
> 5 March 2018 11:31:51.792142 am
>
> VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2254 uuid:
> 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
> StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid:
> 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
> VM: 201707201942 https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
> Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942
> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>
> Image: Pharo6.0 [Latest update: #60536]
>
> Dictionary>>errorKeyNotFound:
> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
> Arguments and temporary variables:
> aKey: #arg1
> Receiver's instance variables:
> tally: 2
> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>
>
> [ self errorKeyNotFound: key ] in Dictionary>>at:
> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
> Arguments and temporary variables:
> key: #arg1
> Receiver's instance variables:
> tally: 2
> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>
>
> Dictionary>>at:ifAbsent:
> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
> Arguments and temporary variables:
> arg1: #arg1
> arg2: [ self errorKeyNotFound: key ]
> tmp1: nil
> Receiver's instance variables:
> tally: 2
> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>
>
> Dictionary>>at:
> Receiver: a Dictionary(#arg3->1 #tmp2->2 )
> Arguments and temporary variables:
> key: #arg1
> Receiver's instance variables:
> tally: 2
> array: {nil. nil. #arg3->1. #tmp2->2. nil}
>
>
> IRPushClosureCopy>>indexForVarNamed:
> Receiver: pushClosureCopyCopiedValues: #() args: #(#arg3)
> Arguments and temporary variables:
> aName: #arg1
> Receiver's instance variables:
> sourceNode: RBBlockNode([ :arg3 |
> | tmp2 |
> tmp2 := arg3.
> tmp2
> nextPutAll: arg...etc...
> bytecodeIndex: nil
> sequence: an IRSequence (1)
> destination: an IRSequence (3)
> successor: nil
> numArgs: nil
> blockSequence: an IRSequence (2)
> tempMap: a Dictionary(#arg3->1 #tmp2->2 )
> copiedValues: #()
> lastBlockSequence: an IRSequence (2)
> arguments: #(#arg3)
>
>
> IRTranslatorV2>>visitPushTemp:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> tmp: pushTemp: #arg1
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRPushTemp>>accept:
> Receiver: pushTemp: #arg1
> Arguments and temporary variables:
> aVisitor: an IRTranslatorV2
> Receiver's instance variables:
> sourceNode: RBArgumentNode(arg1)
> bytecodeIndex: nil
> sequence: an IRSequence (2)
> name: #arg1
>
>
> IRTranslatorV2(IRVisitor)>>visitNode:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> elem: pushTemp: #arg1
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRTranslatorV2>>visitInstruction:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> instr: pushTemp: #arg1
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> [ :arg2 | self visitInstruction: arg2 ] in
> IRTranslatorV2(IRVisitor)>>visitSequence:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> arg1: an IRSequence (2)
> arg2: pushTemp: #arg1
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> OrderedCollection>>do:
> Receiver: an OrderedCollection(pushTemp: #arg3 popIntoTemp: #tmp2
> pushTemp:
> #tmp2 pushDup pushTemp: ...etc...
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> array: an Array(pushTemp: #arg3 popIntoTemp: #tmp2
> pushTemp: #tmp2
> pushDup push...etc...
> firstIndex: 1
> lastIndex: 25
>
>
> IRSequence>>do:
> Receiver: an IRSequence (2)
> Arguments and temporary variables:
> aBlock: [ :arg2 | self visitInstruction: arg2 ]
> Receiver's instance variables:
> sequence: an OrderedCollection(pushTemp: #arg3
> popIntoTemp: #tmp2
> pushTemp: #tm...etc...
> orderNumber: 2
> method: an IRMethod
>
>
> IRTranslatorV2(IRVisitor)>>visitSequence:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> arg1: an IRSequence (2)
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRTranslatorV2>>visitSequence:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> instructionSequence: an IRSequence (2)
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRSequence>>accept:
> Receiver: an IRSequence (2)
> Arguments and temporary variables:
> aVisitor: an IRTranslatorV2
> Receiver's instance variables:
> sequence: an OrderedCollection(pushTemp: #arg3
> popIntoTemp: #tmp2
> pushTemp: #tm...etc...
> orderNumber: 2
> method: an IRMethod
>
>
> IRTranslatorV2(IRVisitor)>>visitNode:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> elem: an IRSequence (2)
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> [ :arg2 | self visitNode: arg2 ] in IRTranslatorV2(IRVisitor)>>visitNodes:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> arg1: a SortedCollection(an IRSequence (1) an IRSequence
> (2) an
> IRSequence (3) ...etc...
> arg2: an IRSequence (2)
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> SortedCollection(OrderedCollection)>>do:
> Receiver: a SortedCollection(an IRSequence (1) an IRSequence (2) an
> IRSequence (3) an IRSequence (4)...etc...
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> array: an Array(an IRSequence (1) an IRSequence (2) an
> IRSequence (3) an
> IRSequ...etc...
> firstIndex: 1
> lastIndex: 7
> sortBlock: [ :arg2 :arg3 | arg2 orderNumber <= arg3
> orderNumber ]
>
>
> IRTranslatorV2(IRVisitor)>>visitNodes:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> arg1: a SortedCollection(an IRSequence (1) an IRSequence
> (2) an
> IRSequence (3) ...etc...
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRTranslatorV2>>visitSequences:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> arg1: a SortedCollection(an IRSequence (1) an IRSequence
> (2) an
> IRSequence (3) ...etc...
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRTranslatorV2>>visitMethod:
> Receiver: an IRTranslatorV2
> Arguments and temporary variables:
> anIr: an IRMethod
> Receiver's instance variables:
> gen: an IRBytecodeGenerator
> currentScope: a Stack(pushClosureCopyCopiedValues: #()
> args: #(#arg3) an
> IRMeth...etc...
> trailer: a CompiledMethodTrailer
> tempVectorStack: a Stack()
> compilationContext: a CompilationContext
>
>
> IRMethod>>accept:
> Receiver: an IRMethod
> Arguments and temporary variables:
> aVisitor: an IRTranslatorV2
> Receiver's instance variables:
> sourceNode: logError: arg1 inContext: arg2
> self
> logStdErrorDuring: [ :arg3 |...etc...
> startSequence: an IRSequence (1)
> numArgs: 2
> properties: nil
> tempMap: a Dictionary(#arg1->1 #arg2->2 )
> pragmas: an OrderedCollection()
> additionalLiterals: an OCLiteralSet(#ifNotNil:)
> compiledMethod: nil
> compilationContext: a CompilationContext
> irPrimitive: primitive 0
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>
>
>
March 5, 2018