Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Interpreter Crash When Doing Fancy Reflection  #13654

@steveisok

Description

@steveisok

This impacts #12619 as it is the way events are auto wired in WebForms.

What's also interesting is that if I put an lldb breakpoint at sre.c line 4039 and try to print the local variables, it'll crash too.

Steps to Reproduce

  1. Copy this gist https://gist.github.com/steveisok/a04557c332dfaf6ba5415a6b426ec39d
  2. Compile it using csc
  3. Run it via mono --interpreter <exe_name>

Current Behavior

The process crashes when trying to invoke the delegate in the gist

Expected Behavior

The delegate should be invoke and work like it does w/o the interpreter

On which platforms did you notice this

[x] macOS
[x] Linux
[x] Windows

Version Used:

Mono JIT compiler version 6.1.0 (refsrc-webforms-switch/620f34c70e3 Wed Mar 20 06:58:47 EDT 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           
	SIGSEGV:       altstack
	Notification:  kqueue
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	Interpreter:   yes
	LLVM:          supported, not enabled.
	Suspend:       hybrid
	GC:            sgen (concurrent by default)

Stacktrace

Here's the crash dump I got.

=================================================================
	Native Crash Reporting
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================
/proc/self/maps:
00400000-00877000 r-xp 00000000 08:01 1617510                            /opt/mono-webforms-switch/bin/mono-sgen
00a77000-00a7e000 r--p 00477000 08:01 1617510                            /opt/mono-webforms-switch/bin/mono-sgen
00a7e000-00a83000 rw-p 0047e000 08:01 1617510                            /opt/mono-webforms-switch/bin/mono-sgen
00a83000-00a9b000 rw-p 00000000 00:00 0 
01de1000-01f12000 rw-p 00000000 00:00 0                                  [heap]
41afa000-41b0a000 rwxp 00000000 00:00 0 
41b31000-41b41000 rwxp 00000000 00:00 0 
7f11fc000000-7f11fc021000 rw-p 00000000 00:00 0 
7f11fc021000-7f1200000000 ---p 00000000 00:00 0 
7f1200199000-7f12001a2000 ---p 00000000 00:00 0 
7f12001a2000-7f120039a000 rw-p 00000000 00:00 0 
7f120039a000-7f12007ff000 r--p 00000000 08:01 1619665                    /opt/mono-webforms-switch/lib/mono/4.5/mscorlib.dll
7f12007ff000-7f12017ff000 rw-p 00000000 00:00 0 
7f12017ff000-7f1201800000 ---p 00000000 00:00 0 
7f1201800000-7f1202400000 rw-p 00000000 00:00 0 
7f120250a000-7f12027e2000 r--p 00000000 08:01 3285870                    /usr/lib/locale/locale-archive
7f12027e2000-7f12029a2000 r-xp 00000000 08:01 1345923                    /lib/x86_64-linux-gnu/libc-2.23.so
7f12029a2000-7f1202ba2000 ---p 001c0000 08:01 1345923                    /lib/x86_64-linux-gnu/libc-2.23.so
7f1202ba2000-7f1202ba6000 r--p 001c0000 08:01 1345923                    /lib/x86_64-linux-gnu/libc-2.23.so
7f1202ba6000-7f1202ba8000 rw-p 001c4000 08:01 1345923                    /lib/x86_64-linux-gnu/libc-2.23.so
7f1202ba8000-7f1202bac000 rw-p 00000000 00:00 0 
7f1202bac000-7f1202bc2000 r-xp 00000000 08:01 1316074                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1202bc2000-7f1202dc1000 ---p 00016000 08:01 1316074                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1202dc1000-7f1202dc2000 rw-p 00015000 08:01 1316074                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1202dc2000-7f1202dda000 r-xp 00000000 08:01 1345910                    /lib/x86_64-linux-gnu/libpthread-2.23.so

=================================================================
	Native stacktrace:
=================================================================
	0x51dca6 - /opt/mono-webforms-switch/bin/mono : (null)
	0x51dff1 - /opt/mono-webforms-switch/bin/mono : (null)
	0x4a9d11 - /opt/mono-webforms-switch/bin/mono : (null)
	0x516bf0 - /opt/mono-webforms-switch/bin/mono : (null)
	0x535b3d - /opt/mono-webforms-switch/bin/mono : (null)
	0x41afa7b0 - Unknown

=================================================================
	Telemetry Dumper:
=================================================================
Pkilling 0x7f1200399700 from 0x7f12038f9740
Entering thread summarizer pause from 0x7f12038f9740
Finished thread summarizer pause from 0x7f12038f9740.

Waiting for dumping threads to resume

=================================================================
	External Debugger Dump:
=================================================================
[New LWP 10196]
[New LWP 10197]
warning: File "/opt/mono-webforms-switch/bin/mono-sgen-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /opt/mono-webforms-switch/bin/mono-sgen-gdb.py
line to your configuration file "/home/steveman/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/steveman/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f1202dd2f7b in __waitpid (pid=pid@entry=10202, stat_loc=stat_loc@entry=0x7ffc3a137a94, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
29	../sysdeps/unix/sysv/linux/waitpid.c: No such file or directory.
  Id   Target Id         Frame 
* 1    Thread 0x7f12038f9740 (LWP 10195) "mono" 0x00007f1202dd2f7b in __waitpid (pid=pid@entry=10202, stat_loc=stat_loc@entry=0x7ffc3a137a94, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
  2    Thread 0x7f1201fff700 (LWP 10196) "SGen worker" pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  3    Thread 0x7f1200399700 (LWP 10197) "Finalizer" 0x00007f1202dd1827 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0xa893a0 <finalizer_sem>) at ../sysdeps/unix/sysv/linux/futex-internal.h:205

Thread 3 (Thread 0x7f1200399700 (LWP 10197)):
#0  0x00007f1202dd1827 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0xa893a0 <finalizer_sem>) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0xa893a0 <finalizer_sem>, abstime=0x0) at sem_waitcommon.c:111
#2  0x00007f1202dd18d4 in __new_sem_wait_slow (sem=0xa893a0 <finalizer_sem>, abstime=0x0) at sem_waitcommon.c:181
#3  0x00007f1202dd197a in __new_sem_wait (sem=sem@entry=0xa893a0 <finalizer_sem>) at sem_wait.c:29
#4  0x00000000006a6eff in mono_os_sem_wait (flags=MONO_SEM_FLAGS_ALERTABLE, sem=0xa893a0 <finalizer_sem>) at ../../mono/utils/mono-os-semaphore.h:203
#5  mono_coop_sem_wait (flags=MONO_SEM_FLAGS_ALERTABLE, sem=0xa893a0 <finalizer_sem>) at ../../mono/utils/mono-coop-semaphore.h:41
#6  finalizer_thread (unused=unused@entry=0x0) at gc.c:969
#7  0x0000000000659ba1 in start_wrapper_internal (stack_ptr=<optimized out>, start_info=0x0) at threads.c:1220
#8  start_wrapper (data=0x1e58d90) at threads.c:1293
#9  0x00007f1202dc96ba in start_thread (arg=0x7f1200399700) at pthread_create.c:333
#10 0x00007f12028e941d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f1201fff700 (LWP 10196)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x000000000070515b in mono_os_cond_wait (mutex=0xa98180 <lock>, cond=0xa98140 <work_cond>) at ../../mono/utils/mono-os-mutex.h:177
#2  get_work (job=<synthetic pointer>, do_idle=<synthetic pointer>, work_context=<synthetic pointer>, worker_index=0) at sgen-thread-pool.c:165
#3  thread_func (data=<optimized out>) at sgen-thread-pool.c:196
#4  0x00007f1202dc96ba in start_thread (arg=0x7f1201fff700) at pthread_create.c:333
#5  0x00007f12028e941d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f12038f9740 (LWP 10195)):
#0  0x00007f1202dd2f7b in __waitpid (pid=pid@entry=10202, stat_loc=stat_loc@entry=0x7ffc3a137a94, options=options@entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
#1  0x000000000051dee8 in dump_native_stacktrace (ctx=ctx@entry=0x0, signal=0x74e5b5 "SIGSEGV") at mini-posix.c:1115
#2  0x000000000051dff1 in mono_dump_native_crash_info (signal=signal@entry=0x74e5b5 "SIGSEGV", ctx=ctx@entry=0x0, info=info@entry=0x0) at mini-posix.c:1157
#3  0x00000000004a9d11 in mono_handle_native_crash (signal=signal@entry=0x74e5b5 "SIGSEGV", ctx=ctx@entry=0x0, info=info@entry=0x0) at mini-exceptions.c:3336
#4  0x0000000000516bf0 in altstack_handle_and_restore (ctx=0x7ffc3a138870, obj=0x0, stack_ovf=0) at exceptions-amd64.c:870
#5  0x0000000000535b3d in interp_delegate_ctor (this_obj=..., target=..., addr=0x0, error=0x7f1202dd2f7b <__waitpid+107>) at interp/interp.c:1471
#6  0x0000000041afa7b0 in ?? ()
#7  0x00007ffc3a138a80 in ?? ()
#8  0x0000000001dec7b8 in ?? ()
#9  0x0000000001dec7c0 in ?? ()
#10 0x0000000001dec7b8 in ?? ()
#11 0x000000000046e4f0 in ?? () at jit-icalls.c:1521
#12 0x0000000000000001 in ?? ()
#13 0x00007ffc3a138890 in ?? ()
#14 0x000f6136d4cb5c7d in ?? ()
#15 0x00007ffc3a138ad0 in ?? ()
#16 0x0000000001dec7c0 in ?? ()
#17 0x0000000001dec7c0 in ?? ()
#18 0x0000000000000000 in ?? ()
Aborted (core dumped)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions