On 27/10/2021 23:44, Kinsey Moore wrote:
+/*
+ * Exception handler. Map the exception class to SIGFPE, SIGSEGV
+ * or SIGILL for Ada or other runtimes.
+ */
+void _Exception_Raise_signal(
+  Internal_errors_Source source,
+  bool                   always_set_to_false,
+  Internal_errors_t      code
+)
+{
+  CPU_Exception_frame *ef;
+  int raise_signal;
+
+  if ( source != RTEMS_FATAL_SOURCE_EXCEPTION ) {
+    return;
+  }
+
+  ef = (rtems_exception_frame *) code;
+  raise_signal = _CPU_Exception_frame_get_signal( ef );
+  if ( raise_signal < 0 ) {
+    return;
+  }
+
+  /* Disable thread dispatch */
+  _CPU_Exception_disable_thread_dispatch();
+
+  /*
+   * While it would be preferable, the call to raise() cannot be deferred to a
+   * post-switch action because it attempts to lock the post-switch action list
+   * to add another item and the list is already locked for iteration. This
+   * causes a deadlock.
+   */
+  raise( raise_signal );

When you get an early exception (before RTEMS is initialized), then you get a double exception here or some sort of undefined behaviour.

+
+  /* Perform dispatch and resume execution */
+  _CPU_Exception_dispatch_and_resume( ef );
+}

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to