From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <52346905.1030401@xenomai.org> Date: Sat, 14 Sep 2013 15:47:49 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <52337BA2.4080106@xenomai.org> <86e45894.00001e70.0000000c@dmerrill_win764.PERF.PERFORMANCESOFTWARE> <52338808.4060404@xenomai.org> <024b1d5a.00001e70.00000015@dmerrill_win764.PERF.PERFORMANCESOFTWARE> In-Reply-To: <024b1d5a.00001e70.00000015@dmerrill_win764.PERF.PERFORMANCESOFTWARE> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] psos t_delete causing a SIGSEGV in suspended task. List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Daniel Merrill Cc: xenomai@xenomai.org On 09/14/2013 01:23 AM, Daniel Merrill wrote: > Alright I think you solved it! We are actually calling the t_suspend from > Ada, which had an exception block around the call. For some reason that is > trying to catch the cancel signal and causes the SIGSEGV. When I remove that > exception handling block the delete appears to work. Thanks for pointing me > in the right direction. >>From what I understand, unwinding on pthread_cancel is a feature which allows automatic destruction of all the objects created on the thread stack in C++ (and other languages implementing exceptions apparently) upon pthread_cancel, this way, pthread_cleanup_push and pthread_cleanup pop are simply handled as C++ objects constructors/destructors when used in C++ code. -- Gilles.