Runtime: рдкрд┐рдирд╡реЛрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд╡рд╛рдж

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдЬреБрд▓ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

using System;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("libupcall.so")]
    public static extern void register_callback(Callback cb);

    [DllImport("libupcall.so")]
    public static extern void upcall();

    public static void MyStaticCallback(int val)
    {
        throw new Exception("error");
    }

    public delegate void Callback(int var);
    static Callback cbMyStaticCallback = MyStaticCallback;  

    static void Main(string[] args)
    {
        try {
            register_callback(MyStaticCallback); 
            upcall();                

        } catch (Exception e) {
            Console.WriteLine("Catch clause caught : {0} \n", e.Message);
        }
    }
}

libupcall.so рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ

#include <stdio.h>

typedef void (*callback)(int val);

callback gCB;

extern void register_callback(callback cb)
{
    printf("register_callback:%p ----\n", (void *)cb);
    gCB = cb;
}
extern void upcall()
{
    static int c = 0;
    printf("upcall ----\n");
    gCB(c++);
}

рдбреЙрдЯрдиреЗрдЯ рд░рди рдмрд┐рдирд╛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред

twoflower@js2-desktop:~/dev/complexexception$ sudo dotnet run
register_callback:0x7f3a041f407c ----
upcall ----

Unhandled Exception: System.Exception: error
   at Program.MyStaticCallback(Int32 val) in /home/twoflower/dev/complexexception/Program.cs:line 14
   at Program.upcall()
   at Program.Main(String[] args) in /home/twoflower/dev/complexexception/Program.cs:line 24
twoflower@js2-desktop:~/dev/complexexception$ 

рдпрд╣рд╛рдБ рдХреЛрд░рдлрд╛рдЗрд▓ рдмреАрдЯреА рд╣реИред

* thread dotnet/coreclr#1: tid = 0, 0x00007fda93b26428 libc.so.6`__GI_raise(sig=6) + 56 at raise.c:54, name = 'dotnet', stop reason = signal SIGABRT
  * frame #0: 0x00007fda93b26428 libc.so.6`__GI_raise(sig=6) + 56 at raise.c:54
    frame dotnet/coreclr#1: 0x00007fda93b2802a libc.so.6`__GI_abort + 362 at abort.c:89
    frame dotnet/coreclr#2: 0x00007fda9326258c libcoreclr.so`??? + 124
    frame dotnet/coreclr#3: 0x00007fda9326148b libcoreclr.so`??? + 235
    frame dotnet/coreclr#4: 0x00007fda92f0b893 libcoreclr.so`??? + 531
    frame dotnet/coreclr#5: 0x00007fda92f0cd71 libcoreclr.so`??? + 593
    frame dotnet/coreclr#6: 0x00007fda92fcaae3 libcoreclr.so`??? + 51
    frame dotnet/coreclr#7: 0x00007fda93ecb263 libgcc_s.so.1`_Unwind_RaiseException(exc=0x0000000002467530) + 115 at unwind.inc:113
    frame dotnet/coreclr#8: 0x00007fda9446790c libstdc++.so.6`__cxa_throw + 92
    frame dotnet/coreclr#9: 0x00007fda9322749d libcoreclr.so`??? + 77
    frame dotnet/coreclr#10: 0x00007fda92fd781e libcoreclr.so`??? + 273
    frame dotnet/coreclr#11: 0x00007fda88e4b7b2 libupcall.so`upcall + 45 at upcall.c:16
    frame dotnet/coreclr#12: 0x00007fda19d85ae6
    frame dotnet/coreclr#13: 0x00007fda19d8588e
    frame dotnet/coreclr#14: 0x00007fda92fd67b7 libcoreclr.so`??? + 124
    frame dotnet/coreclr#15: 0x00007fda92eec630 libcoreclr.so`??? + 1264

рдХреНрдпрд╛ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд░ рдмреНрд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдкрдХрдбрд╝рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЙрд▓рдмреИрдХ рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдб рдерд╛ред рдпрд╣ рд╕реА рдХреЛрдб, рд╕реА ++ рдХреЛрдб, рдПрдПрд╕рдПрдо рдХреЛрдб рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░реНрдл рдЙрди рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реА ++ рдерд╛, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдПрдВрдЧреЗ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрднрд╡рддрдГ рд╕реНрдореГрддрд┐ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рдпрд╛ рд▓реЙрдХ рдХрд┐рдП рдЧрдП рддрд╛рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЖрджрд┐ред рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реА ++ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рддреЛ рдореВрд▓ рдХреЛрдб рдЗрд╕реЗ рдирд┐рдЧрд▓ рд╕рдХрддрд╛ рд╣реИ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВред рдпрд╛ рдпрд╣ рдХреБрдЫ рд░рдирдЯрд╛рдЗрдо рдХреЛ рднреА рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдкрд╡рд╛рдж рдХреНрд░реЙрд╕рд┐рдВрдЧ рдореВрд▓ рд╕реАрдорд╛ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд (рдЬреИрд╕реЗ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рджреЗрд╢реА рдХреЛрдб рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ) рдЬрд╛рдирдмреВрдЭрдХрд░ рдбреЙрдЯрдиреЗрдЯ рдХреЛрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдореВрд▓ рдХреЛрдб рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЙрд▓рдмреИрдХ рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдб рдерд╛ред рдпрд╣ рд╕реА рдХреЛрдб, рд╕реА ++ рдХреЛрдб, рдПрдПрд╕рдПрдо рдХреЛрдб рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░реНрдл рдЙрди рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реА ++ рдерд╛, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдПрдВрдЧреЗ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрднрд╡рддрдГ рд╕реНрдореГрддрд┐ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рдпрд╛ рд▓реЙрдХ рдХрд┐рдП рдЧрдП рддрд╛рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЖрджрд┐ред рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реА ++ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рддреЛ рдореВрд▓ рдХреЛрдб рдЗрд╕реЗ рдирд┐рдЧрд▓ рд╕рдХрддрд╛ рд╣реИ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВред рдпрд╛ рдпрд╣ рдХреБрдЫ рд░рдирдЯрд╛рдЗрдо рдХреЛ рднреА рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ilmax picture ilmax  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aggieben picture aggieben  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yahorsi picture yahorsi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GitAntoinee picture GitAntoinee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sahithreddyk picture sahithreddyk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ