当前位置: 首页 > news >正文

西安建筑网站建设旅行社

西安建筑网站建设,旅行社,网络营销网站建设课程,wordpress防镜像最近遇到个比较经典的案例#xff0c;在c#中调用yara进行文件检测#xff0c;yara是c编写的一个非常强大库#xff0c;github有个大佬用c#对其进行了封装#xff0c;使其能在跨平台下#xff0c;只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃…最近遇到个比较经典的案例在c#中调用yara进行文件检测yara是c编写的一个非常强大库github有个大佬用c#对其进行了封装使其能在跨平台下只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃而且崩的位置非常奇怪在Debug版本下不会崩分析了好久终于找到了原因 https://github.com/airbus-cert/dnYara 然后它提供了官方demo看起来是没有问题的但实际隐藏了个非常难排查的bug。 根据yara的调用说明需要做全局初始化而dnyara把初始化封装在了YaraContext中并实现了Idisposable。可以看到在它的demo中对ctx没有任何的引用成为了一个悬置的变量。在下面Compile或者ScanFile的时候就总是报内存访问异常。 起初还以为是yara c代码上的问题但看了下它源码发现这一段调用没有明显的逻辑或者内存上的错误那么就往.net上排查。突然想到有个GC线程然后猜测是gc线程在函数内部对ctx进行了回收在Release下回收的机制可能更快速因为yara的规则编译和扫描都是比较耗时的。顺便在chatgpt上进行了些求证 证明我的猜测基本是对的GC的行为受编译器优化而未引用变量会被编译器标记导致gc在函数体内部进行回收。 这个地方显然是dnyara封装的锅正确的封装方式为不实现Idispose写一个Release函数让别个在外面手动调用。这样既保证了释放处对ctx有引用不会被gc回收又在没有引用的情况下被回收也不会造成c库的内存错误。如果不改dnyara源码随意增加一处对ctx的强引用就可以避免这个问题了
http://www.dnsts.com.cn/news/101163.html

相关文章:

  • 二级域名网站优化净化工程 技术支持 东莞网站建设
  • 宝安专业做网站广州企业招聘信息
  • 学做简单网站视频教程wordpress批量增加用户
  • 内江规划建设教育网站电子商务网站的建设目标是什么
  • 山东省建设厅继续教育网站凡科建站的优缺点
  • 乌海网站开发景区门户网站建设大数据分析
  • 手机网站域名哪里注册个人电子邮箱怎么填写格式
  • 上海未成年人思想道德建设网站莘县制作网站
  • ps免费模板网站wordpress文章页打不开
  • 重庆网站建设运营vps做网站教程
  • 学校网站建设项目可行性分析中国建筑行业网站
  • 做变形字的网站免费凡科网站
  • 住房和城乡建设部网站加装电梯现在视频做网站晚了吗
  • 快手刷赞网站推广软件可在哪些网站做链接
  • 双语网站建设公司wordpress 前台投稿插件
  • 网站建设新闻咨询平面设计的网站有哪些网站
  • 西安手机网站建设公司四川冠辰网站建设
  • 淘宝二官方网站是做啥的大型网站设计
  • 网站开发人员属于什么软件海南网站建设报价
  • 代做底单的网站百度一下就知道手机版
  • 商务网站建设的一般流程是什么意思wordpress 定制页面
  • 网站工信部实名认证中心wordpress的程序文件
  • 阿里云备案网站负责人网站备案用的方案建设
  • p站关键词排名怎么查看网站的pv uv
  • 网站备案icp备案唐山网站排名提升
  • 网站制作 西安自己在线制作logo免费无水印
  • 大连网站公司更换网站需要备案吗
  • 自己做视频类网站用哪个cms深圳网站设计公司行业
  • 集团定制网站建设公司关键词优化公司哪家效果好
  • 番禺做网站哪家强在线代理网页最干净