Title: [289144] trunk/Source/bmalloc
Revision
289144
Author
ysuz...@apple.com
Date
2022-02-04 16:51:35 -0800 (Fri, 04 Feb 2022)

Log Message

[libpas] allocation failure crash should be PAS_NEVER_INLINE
https://bugs.webkit.org/show_bug.cgi?id=236164

Reviewed by Saam Barati.

We introduce pas_allocation_result_crash_on_error function which can leave OOM crash
information in the crash log. To keep this non-inlined, we annotate it PAS_NEVER_INLINE.

* libpas/src/libpas/pas_allocation_result.h:
(pas_allocation_result_crash_on_error):
* libpas/src/libpas/pas_utils.c:
(pas_panic_on_out_of_memory_error):
* libpas/src/libpas/pas_utils.h:

Modified Paths

Diff

Modified: trunk/Source/bmalloc/ChangeLog (289143 => 289144)


--- trunk/Source/bmalloc/ChangeLog	2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/ChangeLog	2022-02-05 00:51:35 UTC (rev 289144)
@@ -1,3 +1,19 @@
+2022-02-04  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [libpas] allocation failure crash should be PAS_NEVER_INLINE
+        https://bugs.webkit.org/show_bug.cgi?id=236164
+
+        Reviewed by Saam Barati.
+
+        We introduce pas_allocation_result_crash_on_error function which can leave OOM crash
+        information in the crash log. To keep this non-inlined, we annotate it PAS_NEVER_INLINE.
+
+        * libpas/src/libpas/pas_allocation_result.h:
+        (pas_allocation_result_crash_on_error):
+        * libpas/src/libpas/pas_utils.c:
+        (pas_panic_on_out_of_memory_error):
+        * libpas/src/libpas/pas_utils.h:
+
 2022-02-03  Mikhail R. Gadelha  <mikh...@igalia.com>
 
         Fix BSD compilation after r289056

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h (289143 => 289144)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h	2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h	2022-02-05 00:51:35 UTC (rev 289144)
@@ -102,7 +102,8 @@
 static PAS_ALWAYS_INLINE pas_allocation_result
 pas_allocation_result_crash_on_error(pas_allocation_result result)
 {
-    PAS_ASSERT(result.did_succeed);
+    if (PAS_UNLIKELY(!result.did_succeed))
+        pas_panic_on_out_of_memory_error();
     return result;
 }
 

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c (289143 => 289144)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c	2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c	2022-02-05 00:51:35 UTC (rev 289144)
@@ -55,6 +55,11 @@
 }
 #endif /* PAS_ENABLE_TESTING */
 
+void pas_panic_on_out_of_memory_error()
+{
+    __builtin_trap();
+}
+
 static void (*deallocation_did_fail_callback)(const char* reason, void* begin);
 
 PAS_NO_RETURN PAS_NEVER_INLINE void pas_deallocation_did_fail(const char *reason, uintptr_t begin)

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h (289143 => 289144)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2022-02-05 00:51:35 UTC (rev 289144)
@@ -160,6 +160,8 @@
 /* NOTE: panic format string must have \n at the end. */
 PAS_API PAS_NO_RETURN void pas_panic(const char* format, ...) PAS_FORMAT_PRINTF(1, 2);
 
+PAS_API PAS_NEVER_INLINE PAS_NO_RETURN void pas_panic_on_out_of_memory_error(void);
+
 #define pas_set_deallocation_did_fail_callback __pas_set_deallocation_did_fail_callback
 #define pas_set_reallocation_did_fail_callback __pas_set_reallocation_did_fail_callback
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to