On Fri, Jul 22, 2016 at 2:26 AM, Ben Coman <b...@openinworld.com> wrote:

>
>
> On Fri, Jul 22, 2016 at 4:42 AM, Mariano Martinez Peck <
> marianop...@gmail.com> wrote:
>
>>
>>
>> On Sun, Jul 17, 2016 at 6:46 AM, Ben Coman <b...@openinworld.com> wrote:
>>
>>
>>> Do you have some test code or a test image I could run to reproduce
>>> the problem?
>>>
>>
>>
>> The problem is that I cannot reproduce it immediately. It takes me some
>> days and likely some image save and start again until I reproduce it.
>>
>
> Could you try
> How about something that invokes
>
>

Hi Ben. I tried to reproduce it in a couple of ways, trying to simulate
what I do for real but I failed:

| commandString |
commandString := 'wkhtmltopdf  --javascript-delay 300  --encoding utf8
--page-size A4 --image-quality 100  --footer-spacing 10  --header-spacing
10  --margin-top 10  --header-html "http://google.com"; --footer-html "
http://google.com"; "http://pharo.org/"; "/tmp/TestPharoExport.pdf"'.

10 timesRepeat: [

3 timesRepeat: [
OSSUnixSubprocess new
shellCommand: commandString;
redirectStdout;
redirectStderr;
runAndWaitOnExitDo: [ :command :outString :errString |
Transcript show: errString.
Transcript show: outString.
].
 ].
Smalltalk saveSession.

]

But...I could not yet reproduce it in the real case either....so I will
keep you informed.



>
>>
>>>
>>> Now I have one thing for you to try.  In the move of DelaySchedulerXxx
>>> from milliseconds to microseconds, the code for dealing with clock
>>> wrap-around was removed, but I wonder if it was also covering clock
>>> jitter as a side effect.  Could you try again the SpinScheduler but
>>> restore this code...
>>>
>>> From handletTimerEvent...
>>>   "Check for clock wrap-around."
>>>   millisecondNowTick < activeDelayStartTime ifTrue: [
>>>     "clock wrapped"
>>>     self saveResumptionTimes.
>>>     self restoreResumptionTimes ].
>>>   activeDelayStartTime := millisecondNowTick.
>>>
>>> From runTimerEventLoop...
>>>   Time millisecondClockValue < millisecondNowTick
>>>     ifTrue:[ timingSemaphore signal ]. "retry"
>>>
>>> From startup...
>>>    activeDelayStartTime := Time millisecondClockValue.
>>>
>>>
>> OK, I put back the code into the spin scheduler. Then I kept using
>> milisecond one until I finished the changes. Then I saved image and switch
>> to spin one: the image hungs. I cannot even interrupt it. I attach my
>> modifications.
>> Do they look correct?
>>
>
> I confirm that locked my image also.
>
> One change of milli to micro was missed at the bottom of
> runTimeEventLoop...
> That is...
>    Time millisecondClockValue < microsecondNowTick
> to...
>    Time microsecondClockValue < microsecondNowTick
>
>

Thanks. That did the trick!



> (just a case of domestic blindness) [1]  :) :)
>
> cheers -ben
>
> [1] http://www.urbandictionary.com/define.php?term=domestic%20blindness
>
> P.S. A trick to debug delays is to bypass interCycleDelay by at the top of
> it putting...
>     true ifTrue: [^self].
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to