-
-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Building fails on OpenBSD due to missing sendmmsg in libc #5552
Comments
Quinn has a somewhat stale issues on this quinn-rs/quinn#1469 .... This is used by iroh which in turn is used for multi-device setup and (in the future for realtime channels between chat peers). Its otherwise not needed for DC core operations so it could maybe be behind a feature flag. |
The problem is missing But it tries to use syscall which only makes sense for Linux where syscalls are a stable API. |
Documenting what I did on a VM:
Added user to |
I think the way to go is to make quinn-udp build on OpenBSD (i.e. fix quinn-rs/quinn#1469) and then update quinn version we use for iroh 0.4. |
recvmmsg support was only added recently in OpenBSD 7.2 and |
Short-term fix I am going to hide |
Work on the iroh side to get this fixed |
Segmentation fault of test binary trying to run after disabling iroh:
I think the problem is not SQLCipher vs SQLite, but race condition between using the connection and tearing it down from another thread. Likely a bug in unsafe code of |
I don't think it is a race condition, but rather a compile issue in the vendored version of deltachat. Everything works fine when disabling the vendoring |
What is the problem with vendored version of SQLCipher? It is the same version 4.5.6 as in the ports tree. Maybe compilation flags are different, OpenBSD ones are here: "No such file or directory" just says that source code is not found by gdb.
I have minimized segfault to this: use std::error::Error;
use std::fs;
use rusqlite::{Connection, OpenFlags};
fn main() -> Result<(), Box<dyn Error>> {
fs::remove_file("foobar.db").ok();
let conn = Connection::open_with_flags(
"foobar.db",
OpenFlags::SQLITE_OPEN_READ_WRITE | OpenFlags::SQLITE_OPEN_CREATE,
)?;
conn.pragma_update(None, "key", "foobar")?;
conn.execute("CREATE TABLE foo (bar INTEGER)", ())?;
Ok(())
} Corresponding [package]
name = "minmalsegfault"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rusqlite = { version = "0.31.0", features = ["sqlcipher", "bundled-sqlcipher-vendored-openssl"] } It does not segfault if It also does not segfault if I run it under
Backtrace from
The most interesting part is here:
In
Then in the backtrace we see that So it looks like this EDIT: actually it seems that |
I have opened upstream issue: rusqlite/rusqlite#1503 |
Description
In an effort to make Chatmail compatible with OpenBSD and OpenSMTPD, I ran into the issue where
deltachat-core-rust
won't install from source, due to an issue with quinn. Resolving it seems less trivial as noted in the respective repository.Is there a feasible way to work around this issue? Eg, is
quinn
a hard dependency fordeltachat-core-rust
?Details
OpenBSD 7.5-current (GENERIC.MP) #58: Thu May 9 13:42:15 MDT 2024
)cargo install --git https://github.com/deltachat/deltachat-core-rust/ deltachat-rpc-server
on OpenBSDThe text was updated successfully, but these errors were encountered: