问题描述
我正在为rust中的avahi lib绑定,并且遇到运行时错误:
malloc(): unaligned tcache chunk detected
pub fn register_service(
&mut self,name: String,svc_type: String,port: u16,txt: &[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,name.as_ptr(),svc_type.as_ptr(),std::ptr::null_mut(),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(())
}
我正在使用此this example作为参考,并且可以在C语言中使用它,因此我认为错误必定来自绑定。我也不知道这个错误是什么。
我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)