Profile: https://share.firefox.dev/3l0rkz0 The label "XRE_InitChildProcess" is pushed by the function with the same name. I would expect to see the function frame "on the outside", and the label frame on the inside, as a child of the function frame. However, the label frame is on the outside. This is a bit confusing. It can also cause a single function call to show up as multiple different call nodes, depending on what profiler labels *inside* that call were on the stack at the time the function was sampled. For example, if function A pushes label frame B and label frame C (inside B), we might collect the following stacks: - A (parts of function A executing which are outside any label frame) - B, A (B incorrectly on the outside) - B, C, A (both B and C incorrectly on the outside) More examples: - https://share.firefox.dev/3uyDRN6 has multiple `nsLayoutUtils::PaintFrame(...)` call nodes - https://share.firefox.dev/3uATCmA has many `mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal` call nodes
Bug 1733810 Comment 0 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Profile: https://share.firefox.dev/3l0rkz0 The label "XRE_InitChildProcess" is pushed by the function with the same name. I would expect to see the function frame "on the outside", and the label frame on the inside, as a child of the function frame. However, the label frame is on the outside. This is a bit confusing. It can also cause a single function call to show up as multiple different call nodes, depending on what profiler labels *inside* that call were on the stack at the time the function was sampled. For example, if function A pushes label frame B and label frame C (inside B), we might collect the following stacks (stack frames ordered from outside to inside): - A (parts of function A executing which are outside any label frame) - B, A (B incorrectly on the outside) - B, C, A (both B and C incorrectly on the outside) More examples: - https://share.firefox.dev/3uyDRN6 has multiple `nsLayoutUtils::PaintFrame(...)` call nodes - https://share.firefox.dev/3uATCmA has many `mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal` call nodes
Profile: https://share.firefox.dev/3l0rkz0 The label "XRE_InitChildProcess" is pushed by the function with the same name. I would expect to see the function frame "on the outside", and the label frame on the inside, as a child of the function frame. However, the label frame is on the outside. This is a bit confusing. It can also cause a single function call to show up as multiple different call nodes, depending on what profiler labels *inside* that call were on the stack at the time the function was sampled. For example, if function A pushes label frame B and label frame C (inside B), we might collect the following stacks (stack frames ordered from outside to inside): - A (parts of function A executing which are outside any label frame) - B, A (B incorrectly on the outside) - B, C, A (both B and C incorrectly on the outside) More examples: - https://share.firefox.dev/3uyDRN6 has multiple `nsLayoutUtils::PaintFrame(...)` call nodes and multiple `mozilla::layers::WebRenderLayerManager::EndTransactionWithoutLayer` call nodes - https://share.firefox.dev/3uATCmA has many `mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal` call nodes