Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- 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
- 3 participants
- 144615 messages
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
Re: [Pharo-dev] Released versions in Pharo Bootstrap
by Pavel Krivanek
as far as I understand it, you have this:
Calypso v1
- Commander v1
- ClassAnnotations v1
You are working on and you fix a version in ClassAnnotations
Calypso v1
- Commander v1
- ClassAnnotations v2
but you still do not want to make it as a release. When rebuilding your
image, you want to be able to load all three packages in the latest state.
Then you make a new change in Calypso
Calypso v2
- Commander v1
- ClassAnnotations v2
and you want to mark this dependency tree as a new release version
-- Pavel
2018-03-05 16:57 GMT+01:00 Guillermo Polito <guillermopolito(a)gmail.com>:
> But can you explain me the scenario? I still don't understand it :(
>
> On Mon, Mar 5, 2018 at 4:51 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
> wrote:
>
>> Maybe we should just load Calypso dependencies explicitly.
>> In any case they will be used by other projects. Like new Iceberg will
>> use Commander. And ClassAnnotation will be in Kernel.
>> So we will need to load them in another time than Calypso.
>>
>> Now we can just put them directly into #loadCalypso method. (there are
>> three dependencies)
>> It will fix my problem and make Pharo build reproducible.
>>
>> 2018-03-05 16:38 GMT+01:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>>
>>> But, "one single class" does not mean anything. Because it depends from
>>> which branch/commitish you are loading it from...
>>>
>>> Can you explain better what is the problem because I am not getting it...
>>>
>>> In any case, independently of where is the burden, I want to veto any
>>> new integration that may make future builds non-reproducible. Otherwise
>>> this is a source of chaos and dead kittens.
>>>
>>> On Mon, Mar 5, 2018 at 4:17 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
>>> wrote:
>>>
>>>> 2018-03-05 16:13 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>>>>
>>>>> On Mon, Mar 5, 2018 at 4:10 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
>>>>> wrote:
>>>>> > Hi Pablo.
>>>>> >
>>>>> > Dev branch approach not really works. Because any merge into master
>>>>> will
>>>>> > break master baseline. (notice that baseline is in same repo).
>>>>> > And managing merges by hand all the time is not a solution.
>>>>> >
>>>>> >
>>>>> Hi!
>>>>> If you don't want to manage the merges by hand you can maybe have two
>>>>> bsaelines?
>>>>> BaselineOfCalypso and BaselineOfCalypsoDev?
>>>>>
>>>>
>>>> It should work. But is it right way that everybody should follow?
>>>>
>>>> With configurations it was easy to do in single class.
>>>>
>>>>
>>>>>
>>>>> --
>>>>> 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>
>>>
>>
>>
>
>
> --
>
>
>
> 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 Cyril Ferlicot
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". Since it's stable, BaselineOfMaterialDesignLite should depend
only on fixed version of the dependencies. For example it should depend on
MaterialDesignColor "v1.0.0".
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 Guillermo Polito
But can you explain me the scenario? I still don't understand it :(
On Mon, Mar 5, 2018 at 4:51 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
wrote:
> Maybe we should just load Calypso dependencies explicitly.
> In any case they will be used by other projects. Like new Iceberg will use
> Commander. And ClassAnnotation will be in Kernel.
> So we will need to load them in another time than Calypso.
>
> Now we can just put them directly into #loadCalypso method. (there are
> three dependencies)
> It will fix my problem and make Pharo build reproducible.
>
> 2018-03-05 16:38 GMT+01:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>
>> But, "one single class" does not mean anything. Because it depends from
>> which branch/commitish you are loading it from...
>>
>> Can you explain better what is the problem because I am not getting it...
>>
>> In any case, independently of where is the burden, I want to veto any new
>> integration that may make future builds non-reproducible. Otherwise this is
>> a source of chaos and dead kittens.
>>
>> On Mon, Mar 5, 2018 at 4:17 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
>> wrote:
>>
>>> 2018-03-05 16:13 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>>>
>>>> On Mon, Mar 5, 2018 at 4:10 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
>>>> wrote:
>>>> > Hi Pablo.
>>>> >
>>>> > Dev branch approach not really works. Because any merge into master
>>>> will
>>>> > break master baseline. (notice that baseline is in same repo).
>>>> > And managing merges by hand all the time is not a solution.
>>>> >
>>>> >
>>>> Hi!
>>>> If you don't want to manage the merges by hand you can maybe have two
>>>> bsaelines?
>>>> BaselineOfCalypso and BaselineOfCalypsoDev?
>>>>
>>>
>>> It should work. But is it right way that everybody should follow?
>>>
>>> With configurations it was easy to do in single class.
>>>
>>>
>>>>
>>>> --
>>>> 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>
>>
>
>
--
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 Denis Kudriashov
Maybe we should just load Calypso dependencies explicitly.
In any case they will be used by other projects. Like new Iceberg will use
Commander. And ClassAnnotation will be in Kernel.
So we will need to load them in another time than Calypso.
Now we can just put them directly into #loadCalypso method. (there are
three dependencies)
It will fix my problem and make Pharo build reproducible.
2018-03-05 16:38 GMT+01:00 Guillermo Polito <guillermopolito(a)gmail.com>:
> But, "one single class" does not mean anything. Because it depends from
> which branch/commitish you are loading it from...
>
> Can you explain better what is the problem because I am not getting it...
>
> In any case, independently of where is the burden, I want to veto any new
> integration that may make future builds non-reproducible. Otherwise this is
> a source of chaos and dead kittens.
>
> On Mon, Mar 5, 2018 at 4:17 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
> wrote:
>
>> 2018-03-05 16:13 GMT+01:00 Cyril Ferlicot <cyril.ferlicot(a)gmail.com>:
>>
>>> On Mon, Mar 5, 2018 at 4:10 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
>>> wrote:
>>> > Hi Pablo.
>>> >
>>> > Dev branch approach not really works. Because any merge into master
>>> will
>>> > break master baseline. (notice that baseline is in same repo).
>>> > And managing merges by hand all the time is not a solution.
>>> >
>>> >
>>> Hi!
>>> If you don't want to manage the merges by hand you can maybe have two
>>> bsaelines?
>>> BaselineOfCalypso and BaselineOfCalypsoDev?
>>>
>>
>> It should work. But is it right way that everybody should follow?
>>
>> With configurations it was easy to do in single class.
>>
>>
>>>
>>> --
>>> 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