Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add Mono EventPipe rundown support. - #47339

Merged
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support
Jan 28, 2021
Merged

Add Mono EventPipe rundown support.#47339
lateralusX merged 8 commits into
dotnet:masterfrom
lateralusX:lateralusX/add-mono-eventpipe-rundown-support

Conversation

@lateralusX

Copy link
Copy Markdown
Member

Add support into Mono VM emitting rundown events into EventPipe stream. All rundown events emitted by CoreClr during EventPipe rundown phase are now also emitted by Mono, making sure enough meta information is available for tooling to correctly resolve callstacks (not yet emitted) included in EventPipe events emitted by Mono VM.

Re-eanble couple of runtime tests disabled on Mono due to lack of rundown events.

@ghostghost added the area-Tracing-mono label Jan 22, 2021
@lateralusXlateralusX changed the title [WIP] Add mono eventpipe rundown support.[WIP] Add Mono EventPipe rundown support.Jan 22, 2021
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.c Outdated
Comment threadsrc/mono/mono/eventpipe/ep-rt-mono.h Outdated
@lateralusXlateralusX changed the title [WIP] Add Mono EventPipe rundown support.Add Mono EventPipe rundown support.Jan 26, 2021
@lateralusX
lateralusX marked this pull request as ready for review January 26, 2021 10:54
Add support into Mono VM emitting rundown events into EventPipe stream.
All rundown events emitted by CoreClr during EventPipe rundown phase
are now also emitted by Mono, making sure enough meta information
is available for tooling to correctly resolve callstacks (not yet emitted)
included in EventPipe events emitted by Mono VM.
Reduce heap allocations for all strings emitted in rundown. Support
buffer in place conversions.
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 7bb4859 to 1f6cd97CompareJanuary 26, 2021 11:38

@lambdageeklambdageek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mono bits mostly look ok. A couple of nits. Really the only important bit is to add new glib.h symbols to eglib-remap.h, too.

Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/eglib/glib.h Outdated
Comment threadsrc/mono/mono/metadata/icall-eventpipe.c Outdated
Comment threadsrc/mono/mono/metadata/domain-internals.h Outdated
@lateralusX
lateralusXforce-pushed the lateralusX/add-mono-eventpipe-rundown-support branch from 1f6cd97 to a418192CompareJanuary 27, 2021 13:15
@josalem

Copy link
Copy Markdown
Contributor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

@lateralusX

Copy link
Copy Markdown
MemberAuthor

Have you tried collecting a trace using dotnet-trace then opening it in PerfView or VS? I imagine that the end-to-end success criteria for this should be getting stacks for a simple trace.

Collecting stack traces is not yet implemented on Mono. Plan was to build on top of this and implement sample profiler + stack traces and when that is done I will run end-to-end test. I have matched the event and data emitted by CoreClr during rundown in this PR, so most of the information should already be included in the stream once the stack traces are added into the mix. If there are issues detected parsing stack traces due to rundown events I will fix that in upcoming PR's.

@lateralusX
lateralusX merged commit 8c5d4c7 into dotnet:masterJan 28, 2021
@ghostghost locked as resolved and limited conversation to collaborators Feb 27, 2021
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lateralusX@josalem@lambdageek