Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin
, '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

Nil check our run loop thread - #771

Merged
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix
May 13, 2021
Merged

Nil check our run loop thread#771
HeyImChris merged 17 commits into
microsoft:masterfrom
HeyImChris:crasher_fix

Conversation

@HeyImChris

@HeyImChrisHeyImChris commented May 13, 2021

Copy link
Copy Markdown

Please select one of the following

  • I am removing an existing difference between facebook/react-native and microsoft/react-native-macos 👍
  • I am cherry-picking a change from Facebook's react-native into microsoft/react-native-macos 👍
  • I am making a fix / change for the macOS implementation of react-native
  • I am making a change required for Microsoft usage of react-native

Summary

Our logs show intermittent crashes with the stack ending here. It's not obvious what's failing as everything in the stack is pretty safe, but the only potentially suspicious behavior is we blindly pass in an NSRunLoop object into a non-null parameter of a method.

It's not obvious how the custom run loop could fail to instantiate, but there's no harm in being safe here and adding a nil check and log to see if we ever hit this.

After this gets in I can bring the same change over to our stable branches.

Changelog

[General] [Bug] - Nil check our custom run loop

Test Plan

It's just a simple nil check so nothing to test here. I can't repro the failure but in a test app was able to verify we'll throw an exception if we pass a nil object in as a non-null parameter.

@pull-bot

Copy link
Copy Markdown
Messages
📖

📋 Verify Changelog Format - A changelog entry has the following format: [CATEGORY] [TYPE] - Message.

DetailsCATEGORY may be:
  • General
  • macOS
  • iOS
  • Android
  • JavaScript
  • Internal (for changes that do not need to be called out in the release notes)

TYPE may be:

  • Added, for new features.
  • Changed, for changes in existing functionality.
  • Deprecated, for soon-to-be removed features.
  • Removed, for now removed features.
  • Fixed, for any bug fixes.
  • Security, in case of vulnerabilities.

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.

Generated by 🚫 dangerJS against 66da532

{
if (!_scheduledRunloops.count) {
[self scheduleInRunLoop:[NSRunLoop RCTSR_networkRunLoop] forMode:NSDefaultRunLoopMode];
// [TODO(macOS ISS#2323203): `scheduleInRunLoop:forMode:` takes in a non-null run loop parameter so let's be safe and verify that

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Do we have a better bug number or can we create one in git then this generic ISS number?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I looked and one didn't exist. I figure since we need to go through and update all of these anyway, making it one that we can easily track/update all at once might be easier than making a new one and not tracking it well/forgetting about it

@HeyImChris
HeyImChris merged commit e0e598e into microsoft:masterMay 13, 2021
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit to HeyImChris/react-native-macos that referenced this pull request May 13, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Add nullability checks (#704)
* Update RCTCxxBridge.mm
* add nullability checks
* Nil check our run loop thread (#771)
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
* podfile lock
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
HeyImChris added a commit that referenced this pull request May 14, 2021
* Update RCTCxxBridge.mm
* Update RCTCxxBridge.mm
* run loop nil check
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Co-authored-by: Chris Hogan <chrishogan@Chriss-MacBook-Pro-2.local>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@HeyImChris@pull-bot@Saadnajmi@harrieshin