<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi, <div class=""><br class=""></div><div class="">this is lockSurfaceFn: </div><div class=""><br class=""></div><div class=""><div class="">createLockSurfaceFn</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>^ FFICallback </div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>signature: #(void * (void *handle, int *pitch, int x, int y, int w, int h))</div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>block: [ :handle :pitch :x :y :w :h |</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                     </span>pitch signedLongAt: 1 put: (self get_stride: handle).</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                     </span>self get_data: handle ]</div></div><div class=""><br class=""></div><div class="">and</div><div class=""><br class=""></div><div class=""><div class="">createUnlockSurfaceFn</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>^ FFICallback </div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>signature: #(int (void *handle, int x, int y, int w, int h))</div><div class=""><span class="Apple-tab-span" style="white-space:pre">              </span>block: [ :handle :x :y :w :h | 0 "Do nothing” ]</div></div><div class=""><br class=""></div><div class="">cheers!</div><div class="">Esteban</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 12 Mar 2017, at 03:34, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Hi Esteban,<div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Mar 10, 2017 at 7:35 AM, Esteban Lorenzano<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:estebanlm@gmail.com" target="_blank" class="">estebanlm@gmail.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><br class="">Hi,<br class=""><br class="">I’m tumbling into an error in Pharo, because we use callbacks intensively, in Athens(cairo)-to-World conversion in particular, and people is sending always their crash reports… we made the whole conversion a lot more robust since problems started to arise, but now I hit a wall I cannot solve: I think problem is in something in callbacks.<br class=""></blockquote><div class=""><br class=""></div><div class="">My original theory is wrong.  As you suspected it is something to do with the callback in primitiveCopyBits via lockSurfaces & unlockSurfaces.  Can you tell me what the callback is and what code installs it into the lockSurfaceFn and unlockSurfaceFn?</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><br class="">And problem is showing very easy on 64bits (while in 32bits it takes time and is more random).<br class=""><br class="">Here is the easiest way to reproduce it (in mac):<br class=""><br class="">wget<span class="Apple-converted-space"> </span><a href="http://files.pharo.org/get-files/60/pharo64-mac-latest.zip" rel="noreferrer" target="_blank" class="">files.pharo.org/get-files/60/<wbr class="">pharo64-mac-latest.zip</a><br class="">wget<span class="Apple-converted-space"> </span><a href="http://files.pharo.org/get-files/60/pharo64.zip" rel="noreferrer" target="_blank" class="">files.pharo.org/get-files/60/<wbr class="">pharo64.zip</a><br class="">wget<span class="Apple-converted-space"> </span><a href="http://files.pharo.org/get-files/60/sources.zip" rel="noreferrer" target="_blank" class="">files.pharo.org/get-files/60/<wbr class="">sources.zip</a><br class="">unzip pharo64-mac-latest.zip<br class="">unzip pharo64.zip<br class="">unzip sources.zip<br class="">./Pharo.app/Contents/MacOS/<wbr class="">Pharo ./Pharo64-60438.image eval "VGTigerDemo runDemo"<br class=""><br class="">eventually (like 5-6 seconds after, if not immediately), you will have a stack like this:<br class=""><br class="">SmallInteger(Object)>><wbr class="">primitiveFailed:<br class="">SmallInteger(Object)>><wbr class="">primitiveFailed<br class="">SmallInteger(<wbr class="">VMCallbackContext64)>><wbr class="">primSignal:andReturnAs:<wbr class="">fromContext:<br class="">GrafPort>>copyBits<br class="">GrafPort>>image:at:sourceRect:<wbr class="">rule:<br class="">FormCanvas>>image:at:<wbr class="">sourceRect:rule:<br class="">FormCanvas(Canvas)>>drawImage:<wbr class="">at:sourceRect:<br class="">FormCanvas(Canvas)>>drawImage:<wbr class="">at:<br class="">VGTigerDemo>>runDemo<br class="">VGTigerDemo class>>runDemo<br class="">UndefinedObject>>DoIt<br class="">OpalCompiler>>evaluate<br class="">OpalCompiler(AbstractCompiler)<wbr class="">>>evaluate:<br class="">[ result := Smalltalk compiler evaluate: aStream.<br class="">self hasSessionChanged<br class="">       <span class="Apple-converted-space"> </span>ifFalse: [ self stdout<br class="">                       <span class="Apple-converted-space"> </span>print: result;<br class="">                       <span class="Apple-converted-space"> </span>lf ] ] in EvaluateCommandLineHandler>><wbr class="">evaluate: in Block: [ result := Smalltalk compiler evaluate: aStream....<br class="">BlockClosure>>on:do:<br class="">EvaluateCommandLineHandler>><wbr class="">evaluate:<br class="">EvaluateCommandLineHandler>><wbr class="">evaluateArguments<br class="">EvaluateCommandLineHandler>><wbr class="">activate<br class="">EvaluateCommandLineHandler class(CommandLineHandler class)>>activateWith:<br class="">[ aCommandLinehandler activateWith: commandLine ] in PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">activateSubCommand: in Block: [ aCommandLinehandler activateWith: commandLine ]<br class="">BlockClosure>>on:do:<br class="">PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">activateSubCommand:<br class="">PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">handleSubcommand<br class="">PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">handleArgument:<br class="">[ self<br class="">       <span class="Apple-converted-space"> </span>handleArgument:<br class="">               <span class="Apple-converted-space"> </span>(self arguments<br class="">                       <span class="Apple-converted-space"> </span>ifEmpty: [ '' ]<br class="">                       <span class="Apple-converted-space"> </span>ifNotEmpty: [ :arguments | arguments first ]) ] in PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">activate in Block: [ self...<br class="">BlockClosure>>on:do:<br class="">PharoCommandLineHandler(<wbr class="">BasicCommandLineHandler)>><wbr class="">activate<br class="">PharoCommandLineHandler>><wbr class="">activate<br class="">PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:<br class="">[ super activateWith: aCommandLine ] in PharoCommandLineHandler class>>activateWith: in Block: [ super activateWith: aCommandLine ]<br class=""><br class="">Any idea?<br class=""><br class="">thanks!<br class=""><span class="HOEnZb"><font color="#888888" class="">Esteban</font></span></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class=""><div class=""><span style="font-size: small; border-collapse: separate;" class=""><div class="">_,,,^..^,,,_<br class=""></div><div class="">best, Eliot</div></span></div></div></div></div></div></div></blockquote></div><br class=""></div></body></html>