Skip to content

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

@UdjinM6@PastaPastaPasta
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix: resolve potential deadlock by UdjinM6 · Pull Request #5138 · dashpay/dash · GitHub
Skip to content

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

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

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

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

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

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

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

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

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

@UdjinM6@PastaPastaPasta
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: resolve potential deadlock by UdjinM6 · Pull Request #5138 · dashpay/dash · GitHub
Skip to content

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

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

fix: resolve potential deadlock - #5138

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock
Jan 10, 2023
Merged

fix: resolve potential deadlock#5138
PastaPastaPasta merged 3 commits into
dashpay:developfrom
UdjinM6:fix_gov_deadlock

Conversation

@UdjinM6

@UdjinM6UdjinM6 commented Jan 5, 2023

Copy link
Copy Markdown

Issue being fixed or feature implemented

POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

#5021 follow-up

What was done?

Lock cs_main earlier

How Has This Been Tested?

run dashd on testnet

Breaking Changes

none

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1096 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1096 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:778 (in thread 'msghand')
'cs' in governance/object.cpp:104 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')
```
@UdjinM6UdjinM6 added this to the 19 milestone Jan 5, 2023
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(2) 'cs_main' in governance/governance.cpp:1099 (in thread 'init')
(1) 'cs' in governance/governance.cpp:1099 (in thread 'init')
Current lock order is:
(1) 'cs' in governance/governance.cpp:584 (in thread 'msghand')
(2) '::cs_main' in validation.cpp:117 (in thread 'msghand')

@PastaPastaPastaPastaPastaPasta 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.

utACK for squash merge

@PastaPastaPasta
PastaPastaPasta merged commit 30fa322 into dashpay:developJan 10, 2023
gades pushed a commit to cosanta/cosanta-core that referenced this pull request Nov 20, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
gades pushed a commit to piratecash/pirate that referenced this pull request Dec 9, 2023
fadfd84 test: Remove unused connect_nodes_bi (MarcoFalke)
fa3b9ee scripted-diff: test: Replace connect_nodes_bi with connect_nodes (MarcoFalke)
faaee1e test: Use connect_nodes when connecting nodes in the test_framework (MarcoFalke)
1111bb9 test: Reformat python imports to aid scripted diff (MarcoFalke)
Pull request description:
By default all test nodes are connected in a chain. However, instead of just a single connection between each pair of nodes, we end up with up to four connections for a "middle" node (two outbound, two inbound, from each side).
This is generally redundant (tx and block relay should succeed with just a single connection) and confusing. For example, test timeouts after a call to `sync_` may be racy and hard to reproduce. On top of that, the test `debug.log`s are hard to read because txs and block invs may be relayed on the same connection multiple times.
Fix this by inlining `connect_nodes_bi` in the two tests that need it, and then replace it with a single `connect_nodes` in all other tests.
Historic background:
`connect_nodes_bi` has been introduced as a (temporary?) workaround for bug dashpay#5113 and dashpay#5138, which has long been fixed in dashpay#5157 and dashpay#5662.
ACKs for top commit:
laanwj:
ACK fadfd84
jonasschnelli:
utACK fadfd84 - more of less a cleanup PR.
promag:
Tested ACK fadfd84, ran extended tests.
Tree-SHA512: 2d027a8fd150749c071b64438a0a78ec922178628a7dbb89fd1212b0fa34febd451798c940101155d3617c0426c2c4865174147709894f1f1bb6cfa336aa7e24
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.

2 participants

@UdjinM6@PastaPastaPasta