[ITK-users] (R wrapping/SimpleITK) AddCommand to ImageRegistrationMethod bug

Richard Beare richard.beare at gmail.com
Mon Apr 11 17:53:32 EDT 2016


My mac has 3.2.2 and OS X 10.10

On Mon, Apr 11, 2016 at 5:59 PM, Mathew Guilfoyle <mrguilfoyle at gmail.com>
wrote:

> I tried running the code below as suggested - both in RStudio and the
> terminal - and get the same abort/segfault error.
>
> Which version of R are you running? - I can install an older version to
> see if it works.
>
> On 11 Apr 2016, at 01:02, Richard Beare <richard.beare at gmail.com> wrote:
>
> This is a long shot, but lets try testing whether it is the R garbage
> collection causing issues. Modify the test so that every method call result
> is assigned to a different variable:
>
> e.g.
>
> a1 <- gaussian$SetVariance(2)
> a2 <- gaussian$AddCommand( 'sitkStartEvent',  f1 )
> a3 <- gaussian$AddCommand( 'sitkEndEvent', f2 )
>
> I was running in a terminal on my mac, with an older version of R.
>
>
> On Mon, Apr 11, 2016 at 9:56 AM, Mathew Guilfoyle <mrguilfoyle at gmail.com>
> wrote:
>
>> Richard
>>
>> It seems it must be something specific to my setup.  I ran your example
>> and get the same hard abort in Rstudio.  Running the example in R.app I get
>> the same error but a  somewhat more graceful crash with the following error
>> message:
>>
>> gaussian$AddCommand( 'sitkStartEvent',  f1 )
>>
>>  *** caught segfault ***
>> address 0x7ff511000080, cause 'memory not mapped'
>>
>> Traceback:
>>  1: .Call("R_swig_ProcessObject_AddCommand", self, event, cmd,
>> as.logical(.copy),     PACKAGE = "SimpleITK")
>>  2: f(x, ...)
>>  3: gaussian$AddCommand("sitkStartEvent", f1)
>>
>> Possible actions:
>> 1: abort (with core dump, if enabled)
>> 2: normal R exit
>> 3: exit R without saving workspace
>> 4: exit R saving workspace
>>
>> I have tried the version of SimpleITK built without the version of SWIG
>> you patched to correct the character argument error, again I get the same
>> behaviour.
>>
>> Bradley - I’m using the latest SimpleITK 0.9 source compiled using the
>> super build on OS X 10.11.  I’ve done the build with the supplied SWIG and
>> with a version patched by Richard and available here:
>> https://github.com/richardbeare/swig.git.  I’m funning R 3.2.4 in
>> Rstudio IDE.
>>
>>
>>
>> On 10 Apr 2016, at 23:17, Bradley Lowekamp <brad at lowekamp.net> wrote:
>>
>> Hello,
>>
>> I would like to know your environment.
>>
>> What version of SimpleITK?  R? OS? Compiler? Did you use simpleITK's
>> super build? If not what version of SWIG?
>>
>> Thanks
>>
>> On Apr 10, 2016, at 9:46 AM, Mathew Guilfoyle <mrguilfoyle at gmail.com>
>> wrote:
>>
>> Richard
>>
>> Thanks for the reply.  I hadn't appreciated that function being passed in
>> the registration example was a closure.  However, in the
>> FiterProgressReporting example it is not a closure.
>>
>> I have modified my code to be a closure but still get a crash/abort; I
>> have also run the code in the examples themselves verbatim and get the same
>> problem.
>>
>> Any further ideas on how to get this working?
>>
>> Cheers
>>
>>
>> On 10 Apr 2016, at 02:10, Mathew Guilfoyle <mrguilfoyle at gmail.com> wrote:
>>
>> There seems to be a problem with using the $AddCommand function to
>> ImageRegistrationMethod objects in the R wrapping to SimpleITK.
>>
>> Using R 3.2.4 on OS X 10.11
>>
>> Example:
>>
>> f <- function(x){print(x$GetMetricValue())}
>>
>> registration = ImageRegistrationMethod()
>>
>> registration$AddCommand(‘sitkIterationEvent’, f(registration))
>>
>> This last line causes R to abort/hard crash (no error message).  This
>> behaviour is irrespective of which event type I use or the function passed
>> as the second argument (e.g. even something simple like print(‘Hello’))
>>
>> The AddCommand method is inherited from the SimpleITK ProcessObject
>> type.  Digging around in the SimpleITK.R file I can see that the
>> ProcessObject$AddCommand method expects a second argument of type
>> ‘_p_itk__simple__Command’.
>>
>> There is a ‘Command’ method that generates a new object of type
>> ‘_p_itk__simple__Command’.  If I pass this resulting object as the second
>> argument to registration$AddCommand then I do not get an error.  However,
>> there doesn’t seem to be any way to point the ‘_p_itk__simple__Command’
>> object to my function or otherwise convert my function to a
>> ‘_p_itk__simple__Command’ type.
>>
>> The $AddCommand method is used in a couple of example scripts on the
>> SimpleITK site (using it for monitoring a registration and a filter e.g.
>> https://github.com/SimpleITK/SimpleITK/blob/master/Examples/FilterProgressReporting.R)
>> so I don’t know if it was working previously and a bug has been introduced
>> more recently? (the example scripts cause the same error when I run them
>> now)
>>
>>
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20160412/d3741b3f/attachment.html>


More information about the Insight-users mailing list