erikdesjardins/chrome-extension-deploy 25
Deploy Chrome extensions to the Chrome Web Store.
erikdesjardins/firefox-extension-deploy 11
Deploy Firefox extensions to AMO.
erikdesjardins/babel-plugin-transform-dead-code-elimination 8
Babel 6 fork of babel-plugin-dead-code-elimination.
erikdesjardins/inert-entry-webpack-plugin 7
Webpack plugin to allow non-js entry chunks.
erikdesjardins/contents-loader 5
Webpack loader to import the contents of a directory.
erikdesjardins/eslint-plugin-dollar-sign 3
Enforce $varName for jQuery assignment.
Webpack loader to execute imports at build time.
erikdesjardins/extricate-loader 3
Webpack loader to extract content from the bundle.
erikdesjardins/eslint-plugin-no-useless-assign 2
Prevent useless assignment.
erikdesjardins/eslint-plugin-sort-imports-es6 2
A sort-imports rule that properly distinguishes between ES6 import types.
push eventerikdesjardins/properpoly
commit sha e21d3c7bb737a33e61df338b389d19f6c3c624c8
simplify readme
push time in 6 days
push eventerikdesjardins/properpoly
commit sha 5bb8945f00741210d1d9fa5d4c250e4183c728e6
tweak readme
push time in 6 days
push eventerikdesjardins/properpoly
commit sha 184ceda8a5a92cc09ff89ea4d990981347d82b0a
initial impl
push time in 6 days
push eventerikdesjardins/properpoly
commit sha 34944942f65caa5e7e0f3d48dc8e3d5352df55a7
Update README.md
push time in 6 days
created repositoryerikdesjardins/properpoly
RK-002 firmware with better polyphony.
created time in 6 days
pull request commentrust-lang/rust
Rebased: Mark drop calls in landing pads cold instead of noinline
@oxalica I'm confused what you're responding to. I don't think anyone is in doubt that the exponential inlining issues are fixed, that's the reason this PR removes noinline
.
We want cold
, since panicking paths are cold, pretty much by definition.
comment created time in 19 days
push eventerikdesjardins/infoband
commit sha 2d48d680da079d8106e17fd96c50c876b71ceb82
move instance fetching to create_and_run_message_loop for better error handling
commit sha bbf797206a9f983b16845f04212436e1ae90f67e
stop painting when session is locked hopefully this will avoid the persistent buffered paint failures
commit sha 06c10a31dd846d930bdf9a2ce4cebf3e6b384557
WIP: use PDH to fetch network usage instead of GetIfTable
commit sha f2cf5c406cc678aa34cadd1bde4c0288b4edd0d6
Revert "WIP: use PDH to fetch network usage instead of GetIfTable" This reverts commit 06c10a31dd846d930bdf9a2ce4cebf3e6b384557. As it turns out, this just calls GetIfTable internally, and performance profiling shows it performing pretty much exactly the same...
commit sha 5ce97b62ff6bf687deb7cbcd64a08ba24d1c9131
handle errors for each fetch type separately for better graceful degradation (and more understandable error logs)
commit sha 9dfc3ae6fe6f2ad0531c790583cd89814ac98c19
1.4.2
commit sha 4645307d3897e3dbad09d3f314f4b93f518896b5
Merge pull request #10 from erikdesjardins/skip stop painting when session is locked; PDH for network data (not really)
push time in 20 days
PR merged erikdesjardins/infoband
I was going to use PDH to collect network usage information, but it just calls GetIfTable
internally anyways...
pr closed time in 20 days
created tagerikdesjardins/infoband
Windows "DeskBand" displaying cpu/mem/disk/network info.
created time in 20 days
push eventerikdesjardins/infoband
commit sha 9dfc3ae6fe6f2ad0531c790583cd89814ac98c19
1.4.2
push time in 20 days
push eventerikdesjardins/infoband
commit sha 06c10a31dd846d930bdf9a2ce4cebf3e6b384557
WIP: use PDH to fetch network usage instead of GetIfTable
commit sha f2cf5c406cc678aa34cadd1bde4c0288b4edd0d6
Revert "WIP: use PDH to fetch network usage instead of GetIfTable" This reverts commit 06c10a31dd846d930bdf9a2ce4cebf3e6b384557. As it turns out, this just calls GetIfTable internally, and performance profiling shows it performing pretty much exactly the same...
commit sha 5ce97b62ff6bf687deb7cbcd64a08ba24d1c9131
handle errors for each fetch type separately for better graceful degradation (and more understandable error logs)
push time in 20 days
pull request commentrust-lang/rust
Rebased: Mark drop calls in landing pads cold instead of noinline
Minimized repro:
// run-pass
// edition:2021
// needs-unwind
use std::panic::catch_unwind;
use std::sync::Arc;
struct DecrementOnDrop(*const ());
impl Drop for DecrementOnDrop {
fn drop(&mut self) {
unsafe { Arc::decrement_strong_count(self.0); }
}
}
fn block_on() {
let _waker = DecrementOnDrop(Arc::into_raw(Arc::new(())));
panic!();
}
#[inline(never)]
#[no_mangle]
fn panicked_at() {
_ = catch_unwind(|| block_on());
}
fn main() {
panicked_at();
}
comment created time in 22 days
pull request commentrust-lang/rust
Rebased: Mark drop calls in landing pads cold instead of noinline
I've spent some time looking into this, and I can't tell what the cause of the problem is. But there's definitely something wrong here.
What I can tell is:
_CxxThrowException
, here, gets called with a valid pointer to an Exception
object (throw_ptr
).
The cleanup
function, here, instead of getting passed throw_ptr
, is called with some unrelated nonsensical pointer, henceforth referred to as foo
. The first four bytes that foo
points to are always zero, so this load returns zero, which of course is not the correct canary value, triggering the "foreign rust exception" error.
I cannot tell how foo
ends up as the argument to cleanup
, but it seems like a miscompile, since foo
points to (what seems to be) a deallocated object (see below). cleanup
is called via a bunch of convoluted MSVC unwinding code, which I am trying to reverse engineer.
Setting memory breakpoints on the memory pointed to by foo
, these are the operations that occur (in pseudo-rust):
struct Foo {
a: AtomicU32,
b: AtomicU32,
inner: *const Inner
}
struct Inner {
a: AtomicU32,
...
}
// ...things happen...
foo = alloc(Foo)
*foo = <stack data> // something like `*foo = Foo { 1, 1, *const Inner { 1 } }`
// ...other things happen...
panic(...) // calls `_CxxThrowException(throw_ptr)`
// ...other things happen...
if decrement(foo.a) != 0 { goto other code; }
if decrement(foo->inner.a) != 0 { goto other code; }
if decrement(foo.b) != 0 { goto other code; }
dealloc(foo)
// ... other things happen...
cleanup(foo) // at this point, due to the decrements, foo points to `Foo { 0, 0, *const Inner { 0 } }`
This behavior, with two atomic counters getting decremented to zero before it's deallocated, makes me think Foo
is Arc
, although Arc
isn't nested like that (maybe it's Arc<Arc<T>>
...). Not that this really helps us understand why foo
is getting passed to cleanup
instead of the correct value...
comment created time in 22 days
Pull request review commentrust-lang/rust
Add regression test for LLVM 17-rc3 miscompile
+// compile-flags: -O -Ccodegen-units=1+// only-x86_64-unknown-linux-gnu
We should avoid making tests target specific unless it's absolutely required, since it makes the development experience worse for devs on other platforms.
If you need to, you can make the test no_core
and specify --target x86_64-unknown-linux-gnu
instead, which works regardless of the host (e.g.), but I don't think that will be necessary here--you can probably just delete this line.
comment created time in 24 days
Pull request review commentrust-lang/rust
Add regression test for LLVM 17-rc3 miscompile
+// compile-flags: -O -Ccodegen-units=1+// only-x86_64-unknown-linux-gnu++#![crate_type = "lib"]++#[repr(i64)]+pub enum Boolean {+ False = 0,+ True = 1,+}++impl Clone for Boolean {+ fn clone(&self) -> Self {+ *self+ }+}++impl Copy for Boolean {}++extern "C" {+ fn set_value(foo: *mut i64);+}++pub fn foo(x: bool) {+ let mut foo = core::mem::MaybeUninit::<i64>::uninit();+ unsafe {+ set_value(foo.as_mut_ptr());+ }++ if x {+ let l1 = unsafe { *foo.as_mut_ptr().cast::<Boolean>() };+ if matches!(l1, Boolean::False) {+ unsafe {+ *foo.as_mut_ptr() = 0;+ }+ }+ }++ let l2 = unsafe { *foo.as_mut_ptr() };+ if l2 == 2 {+ // CHECK: call void @bar+ bar();+ }+}++#[no_mangle]+#[inline(never)]+pub fn bar() {+ println!("Working correctly!");+}
Nit: declaring bar
as an extern fn would make the IR a bit cleaner.
comment created time in 24 days
Pull request review commentrust-lang/rust
Add regression test for LLVM 17-rc3 miscompile
+// compile-flags: -O -Ccodegen-units=1+// only-x86_64-unknown-linux-gnu
Does this need to be limited to x64 linux? It doesn't look target specific.
comment created time in 24 days
push eventerikdesjardins/infoband
commit sha 405a5e9b7f43c370580b627744014415704fa375
always skip paint on error, not just the first time
commit sha 7105f5ff0ea92b04f700629e3960bba495cedd8c
actually deny warnings in clippy
commit sha b312dcc5bdd219f7544e35ab472d28a2087b10e1
1.4.1
commit sha c7146e61b00541e35c260d51c5aec4432a520f06
Merge pull request #9 from erikdesjardins/fix always skip paint on error, not just the first time
push time in 24 days
created tagerikdesjardins/infoband
Windows "DeskBand" displaying cpu/mem/disk/network info.
created time in 24 days
push eventerikdesjardins/infoband
commit sha b312dcc5bdd219f7544e35ab472d28a2087b10e1
1.4.1
push time in 24 days