miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors
, '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

miri: fix ICE when running out of address space - #107756

Merged
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses
Feb 8, 2023
Merged

miri: fix ICE when running out of address space#107756
bors merged 1 commit into
rust-lang:masterfrom
RalfJung:miri-out-of-addresses

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Fixesrust-lang/miri#2769
r? @oli-obk

I didn't add a test since that requires oli-obk/ui_test#38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 7, 2023
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung

RalfJung commented Feb 7, 2023

Copy link
Copy Markdown
MemberAuthor

Ah, the Vec-based version of the test is actually instantaneous:

//@only-32bit//@only-host-x86_64fnmain(){for _ in0..4{letmut a:Vec<u8> = Vec::with_capacity(1024*1024*1024);let _ptr = a.spare_capacity_mut().as_ptr();}}

Still blocked on oli-obk/ui_test#38 though.

@RalfJung
RalfJungforce-pushed the miri-out-of-addresses branch from 172ad10 to 2900ba1CompareFebruary 7, 2023 12:27
@oli-obk

Copy link
Copy Markdown
Contributor

🤣 the following rustc program takes 40s to compile on my machine, and uses around 10GB of RAM on a "32 bit machine" (the const evaluator's emulated target):

constFOO:() = {foo(10);};constfnfoo(x:usize){if x != 0{letmut array = [0_u8; usize::MAX / 4];foo(x - 1);
array[array.len() - 1] = 42;}}fnmain(){FOO;}

obvious in hindsight, and could even be useful for embedded systems doing lotsa work at compile-time, but it makes absolutely no sense outside of the "all addresses are symbolic" scheme

@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Feb 7, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 2900ba1 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 7, 2023
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Oh yeah, in CTFE we can totally have more than 4GB of virtual address space with 32bit pointers. With perfect provenance tracking we can basically assign the same physical address multiple times and there is no possibility of confusion. (We don't actually assign any physical address of course, but we could imagine that we did.)

@oli-obk

Copy link
Copy Markdown
Contributor

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 7, 2023
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#107719 (Remove `arena_cache` modifier from `upstream_monomorphizations_for`)
- rust-lang#107740 (Avoid locking the global context across the `after_expansion` callback)
- rust-lang#107746 (Split fn_ctxt/adjust_fulfillment_errors from fn_ctxt/checks)
- rust-lang#107749 (allow quick-edit convenience)
- rust-lang#107750 (make more readable)
- rust-lang#107755 (remove binder from query constraints)
- rust-lang#107756 (miri: fix ICE when running out of address space)
- rust-lang#107764 (llvm-16: Use Triple.h from new header location.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d044c1b into rust-lang:masterFeb 8, 2023
@rustbotrustbot added this to the 1.69.0 milestone Feb 8, 2023
@RalfJung
RalfJung deleted the miri-out-of-addresses branch February 11, 2023 21:31
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? `@oli-obk`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 16, 2024
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#124024 - RalfJung:interpret-comment, r=oli-obk
interpret: remove outdated comment
In rust-lang#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Apr 17, 2024
interpret: remove outdated comment
In rust-lang/rust#107756, allocation became generally fallible, so the "only panic if there is provenance" no longer applies.
r? ``@oli-obk``
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Miri reports UB in safe code due to address space exhaustion (?)

4 participants

@RalfJung@rustbot@oli-obk@bors