<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Hey,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">The problem is that C# code can be interrupted at any point in addition that user bugs in the install code could leave the runtime in a broken state.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I agree that having the runtime provide a callback to be called when we hard crash to be way to go.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Rodrigo<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">Miguel de Icaza <miguel@microsoft.com><br>
<b>Date: </b>Friday, September 16, 2016 at 12:42 PM<br>
<b>To: </b>Rodrigo Kumpera <rokumper@microsoft.com><br>
<b>Cc: </b>Rolf Kvinge <Rolf.Kvinge@microsoft.com>, "macios-devel@lists.dot.net" <macios-devel@lists.dot.net>, "mono-devel-list@lists.dot.net" <mono-devel-list@lists.dot.net>, "android-devel@lists.dot.net" <android-devel@lists.dot.net><br>
<b>Subject: </b>Re: [android-devel] [macios-devel] Signal-chaining & crash reporters<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Hello, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal">Exposing signal handlers from managed code is always the wrong solution.
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If we're crashing in the runtime, a managed code signal handler has very little chance of works. It's a scenario we will never even consider supporting.<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I guess the simple solution is to add an embedding API call that queues signal handlers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">to be called first before chaining to the OS one.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">Can you elaborate on that?   I do not quite follow.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I also hate the idea of having a window in which the runtime signals are unreliable.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Another option is to provide an explicit “callback” method that the runtime can invoke for the non-NulLReference exception codepath, and use this to chain to the HockeyApp support.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">That is the code where on desktop we end up calling GDB and attaching, instead, we would invoke the method hook. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The downside of this approach is that we need special changes done on third party libraries to accommodate this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Miguel.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">--<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Rodrigo<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><br>
Sent from <a href="https://link.nylas.com/link/d48tmovljcet4a9zmfuetdrqy/local-32fb72b2-e621/0?redirect=https%3A%2F%2Fnylas.com%2Fn1%3Fref%3Dn1">
Nylas N1</a>, the extensible, open source mail client.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><img border="0" width="1" height="1" id="_x0000_i1025" src="https://link.nylas.com/open/d48tmovljcet4a9zmfuetdrqy/local-32fb72b2-e621"><o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
On Sep 16 2016, at 12:00 pm, Rolf Kvinge via android-devel <<a href="mailto:android-devel@lists.dot.net">android-devel@lists.dot.net</a>> wrote:
<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">> On 16/09/16 19:22, "Miguel de Icaza" <<a href="mailto:miguel@microsoft.com">miguel@microsoft.com</a>> wrote:<br>
> <br>
> Hello,<br>
> <br>
> Thanks for getting these proposals out Rolf.<br>
> <br>
> I am not a fan of any of the provided options.<br>
> <br>
> We have two issues here: Mono is doing the right thing by supporting “chained handlers”, but many of these libraries can not chain signal handlers.<br>
> <br>
> Let me propose that we add a pair of methods, to undo the signal handling setup, and to restore the handling setup and surface those to managed code.<br>
> <br>
> The code for things like HockeyApp would become:<br>
> <br>
> Mono.UndoSignalHandlingSetup (); // SIGSEGV points back to original handlers<br>
> HockeyAppInstallHandlers (); // SIGSEGV now points to HockeyApp handlers<br>
> Mono.InstallSignalHandlers (); // SIGSEGV now points to Mono handler, that have chained capabilities<br>
> <br>
> The Undo/Install is necessary for the rare case of a library that can do proper chaining and might want to chain to another handler, so they would not chain back to Mono.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I think this could work.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Another advantage is that it would not require any code changes in the products, only Mono.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I can have a look at implementing (and testing) this, unless the runtime team wants to do it?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Rolf<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">_______________________________________________<br>
macios-devel mailing list<br>
<a href="mailto:macios-devel@lists.dot.net">macios-devel@lists.dot.net</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.dot.net%2fmailman%2flistinfo%2fmacios-devel&data=02%7c01%7crokumper%40microsoft.com%7cdb0fbc77d5194f580a0708d3de63babf%7c72f988bf86f141af91ab2d7cd011db47%7c1%7c0%7c636096492348073849&sdata=W2Ib2LSRJDMd08Q6%2bfz7MRUXAw9gmpZaWQyvZxMOr8g%3d">https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.dot.net%2fmailman%2flistinfo%2fmacios-devel&data=02%7c01%7crokumper%40microsoft.com%7cdb0fbc77d5194f580a0708d3de63babf%7c72f988bf86f141af91ab2d7cd011db47%7c1%7c0%7c636096492348073849&sdata=W2Ib2LSRJDMd08Q6%2bfz7MRUXAw9gmpZaWQyvZxMOr8g%3d</a><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br>
_______________________________________________<br>
android-devel mailing list<br>
<a href="mailto:android-devel@lists.dot.net">android-devel@lists.dot.net</a><br>
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.dot.net%2fmailman%2flistinfo%2fandroid-devel&data=02%7c01%7crokumper%40microsoft.com%7cdb0fbc77d5194f580a0708d3de63babf%7c72f988bf86f141af91ab2d7cd011db47%7c1%7c0%7c636096492348073849&sdata=PkmNNDSW3Ec6oNM19Z%2bz3h1uq%2f9ZEZu3O6m1B3NvN2A%3d">https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.dot.net%2fmailman%2flistinfo%2fandroid-devel&data=02%7c01%7crokumper%40microsoft.com%7cdb0fbc77d5194f580a0708d3de63babf%7c72f988bf86f141af91ab2d7cd011db47%7c1%7c0%7c636096492348073849&sdata=PkmNNDSW3Ec6oNM19Z%2bz3h1uq%2f9ZEZu3O6m1B3NvN2A%3d</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>