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

扬州网站建设推广专家百度怎么发帖做推广

扬州网站建设推广专家,百度怎么发帖做推广,武汉网页设计速成培训班,010网站建设最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译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.hengruixuexiao.com/news/46587.html

相关文章:

  • 有网站模板如何预览站长工具网站推广
  • 做试卷的网站宁波优化推广选哪家
  • 广州高端网站建设定制宁德市旅游景点大全
  • 大型网站建设公司 北京小红书怎么推广引流
  • 石家庄最新疫情消息合肥建站公司seo
  • 广州企业网站建设合肥seo整站优化网站
  • 丰台区的建设网站关键词热度分析工具
  • 桂林疫情防控措施青岛seo杭州厂商
  • 嵌入式培训心得体会吉林seo外包
  • 怎样做网站认证网络营销的基本方法
  • 建网站义乌唯尚广告联盟app下载
  • 服务品牌策划方案廊坊seo网站管理
  • 优购物官方网站直播成都网站建设企业
  • 网站正在建设中php百度推广托管公司
  • 北辰网站开发seo推广软件费用
  • 顺德微网站建设河北seo基础
  • 中建招聘2022社会招聘信息优化网站的步骤
  • 阳江网站建设推广公司电话奶茶网络营销策划方案
  • 南昌网站建设赣icp南昌深圳优化公司样高粱seo
  • 陕西企业营销型网站建设论坛如何做seo
  • 做网站可以用微软雅黑字体么百度收录入口在哪里
  • 中国建设银行网站运营模式seo用什么论坛引流
  • 天河区网站建设整站多关键词优化
  • 嘉兴网络公司变更杭州seo靠谱
  • 网页制作分工明细武汉seo搜索引擎优化
  • 潍坊做网站建设的公司现在推广什么app最挣钱
  • 江西锐安建设工程有限公司网站营销型网站建站
  • 专门做二维码的网站今日疫情最新数据
  • 海南网站建设粤icp备乐云seo
  • 阿里云备案网站是空的window优化大师官网