#rust #avahi #rust-bindgen
#Ржавчина #авахи #rust-привязка #avahi
Вопрос:
Я работаю над привязкой для библиотеки avahi в rust, и я сталкиваюсь с ошибкой во время выполнения:
malloc(): unaligned tcache chunk detected
ошибка кода:
pub fn register_service(
amp;mut self,
name: String,
svc_type: String,
port: u16,
txt: amp;[String],
) -> Result<(), AvahiError> {
let group = match self.group {
Some(group) => group,
None => {
let group = unsafe {
ffi::avahi_entry_group_new(
self.client_inner,
Some(group_callback),
std::ptr::null_mut() as *mut c_void,
)
};
if group.is_null() {
return Err(AvahiError::GroupCreateError);
}
self.group.replace(group);
return self.register_service(name, svc_type, port, txt);
}
};
// avahi_entry_group_is_empty or any other function that uses group causes this error
if unsafe { ffi::avahi_entry_group_is_empty(group) != 0 } {
let name = CString::new(name).unwrap();
let svc_type = CString::new(svc_type).unwrap();
let ret = unsafe {
ffi::avahi_entry_group_add_service(
group,
ffi::AVAHI_IF_UNSPEC,
ffi::AVAHI_PROTO_UNSPEC,
0,
name.as_ptr(),
svc_type.as_ptr(),
std::ptr::null_mut(),
std::ptr::null_mut(),
port,
std::ptr::null_mut() as *mut i8,
)
};
if ret < 0 {
let msg = unsafe { ffi::avahi_strerror(ret) };
return Err(AvahiError::CreateService(unsafe {
CString::from_raw(msg as *mut i8)
.to_str()
.unwrap()
.to_owned()
}));
}
if unsafe { ffi::avahi_entry_group_commit(group) == 0 } {
return Err(AvahiError::EntryGroupCommit);
}
}
Ok(())
}
Я использую этот этот пример в качестве ссылки, и я заставил его работать на C, поэтому я думаю, что ошибка должна исходить из привязок. Я тоже не уверен, что понимаю, что это за ошибка.
Что я делаю не так?