alacritty / alacritty/copypasta

SIGSEGV on MacOS

Aperta
#11 7 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
Lingua principale
Rust
Stelle
350
Fork
39
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I'm seeing crashes on MacOS Catalina (10.15.3) with Rust 1.43.1. This happens in the [original clipboard crate](https://github.com/aweinstock314/rust-clipboard) as well, but since that seems unmaintained I'm reporting it here.

You can reproduce the crash by running `cargo test` in my [fork](https://github.com/RoyJacobs/copypasta/tree/osx-failure).

You may need to run it a few times, but you will get different errors such as:
```
failing-517cc89e9cb2a459(35714,0x70000ebe5000) malloc: *** error for object 0x7f8eb170a6e0: pointer being freed was not allocated
failing-517cc89e9cb2a459(35714,0x70000ebe5000) malloc: *** set a breakpoint in malloc_error_break to debug
```

Or:
```
failing-517cc89e9cb2a459(35969,0x700000ae7000) malloc: Double free of object 0x7fe935c10a50
failing-517cc89e9cb2a459(35969,0x700000ae7000) malloc: *** set a breakpoint in malloc_error_break to debug
```

I'm unfortunately no MacOS developer so I have no idea what causes this, but it only seems to occur when I'm accessing the clipboard from both my test code and my regular (under test) code, like in `some_other_fn` in the code below. Moving the `ClipboardContext` to a shared static using something like `lazy_static!` does not help.

The test is fairly simple:

```
use copypasta::{ClipboardContext, ClipboardProvider};

fn some_other_fn() {
let mut ctx = ClipboardContext::new().unwrap();
ctx.get_contents().unwrap();
}

#[cfg(test)]
mod tests {
use super::*;

fn clear_clipboard() {
let mut clipboard: ClipboardContext = ClipboardContext::new().unwrap();
clipboard.set_contents("".into()).unwrap();
}

#[test]
fn foo() {
clear_clipboard();

let mut ctx = ClipboardContext::new().unwrap();
ctx.set_contents("Dummy".into()).unwrap();
ctx.get_contents().unwrap();

some_other_fn();
}

#[test]
fn bar() {
clear_clipboard();

let mut ctx = ClipboardContext::new().unwrap();
ctx.set_contents("Dummy".into()).unwrap();
ctx.get_contents().unwrap();

some_other_fn();
}
}
```

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.