Note that there are some explanatory texts on larger screens.

plurals
  1. POWhat does ovly_debug_event do in chrome?
    primarykey
    data
    text
    <p>I was looking at chrome's thread stacks when I noticed that a lot of threads have a trace similar to this:</p> <pre><code>0, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x6c0 1, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x4a8 2, wow64.dll!Wow64SystemServiceEx+0x1ce 3, wow64.dll!Wow64LdrpInitialize+0x429 4, ntdll.dll!RtlIsDosDeviceName_U+0x24c87 5, ntdll.dll!LdrInitializeThunk+0xe 6, ntdll.dll!ZwWaitForSingleObject+0x15 7, kernel32.dll!WaitForSingleObjectEx+0x43 8, kernel32.dll!WaitForSingleObject+0x12 9, chrome.dll!ovly_debug_event+0x16574 10, chrome.dll!ovly_debug_event+0x14904 11, chrome.dll!ovly_debug_event+0x14826 12, chrome.dll!ovly_debug_event+0x16d19 13, chrome.dll!ovly_debug_event+0x1bea1b 14, chrome.dll!ovly_debug_event+0xe8ff4 15, chrome.dll!ovly_debug_event+0x16b50 16, chrome.dll!ovly_debug_event+0x16ab2 17, kernel32.dll!BaseThreadInitThunk+0x12 18, ntdll.dll!RtlInitializeExceptionChain+0x63 19, ntdll.dll!RtlInitializeExceptionChain+0x36 </code></pre> <p>The chromium source has the following code in <code>sel_ldr.c</code> which seems to declare <code>ovly_debug_event</code> as an almost empty function:</p> <pre><code>void _ovly_debug_event (void) { #ifdef __GNUC__ /* * The asm volatile is here as instructed by the GCC docs. * It's not enough to declare a function noinline. * GCC will still look inside the function to see if it's worth calling. */ __asm__ volatile (""); #elif NACL_WINDOWS /* * Visual Studio inlines empty functions even with noinline attribute, * so we need a compile memory barrier to make this function not to be * inlined. Also, it guarantees that nacl_global_xlate_base initialization * is not reordered. This is important for gdb since it sets breakpoint on * this function and reads nacl_global_xlate_base value. */ _ReadWriteBarrier(); #endif } static void StopForDebuggerInit (uintptr_t mem_start) { /* Put xlate_base in a place where gdb can find it. */ nacl_global_xlate_base = mem_start; NaClSandboxMemoryStartForValgrind(mem_start); _ovly_debug_event(); } </code></pre> <p>This raises the question: Why does chrome seem to spend so much time in a function that is only for debugging and is almost empty in chromium?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload