U盘操作,导致线程卡死问题

最近在处理U盘操作出现系统卡死的问题

现象描述:

1.U盘在转储文件(将设备上文件拷贝到U盘上),有概率出现拷贝卡死,从而导致系统死机(通过插拔U盘,偶尔能够恢复正常)

2.文件并不大,大小也没有太大关心

3.部分U盘容易出来,其他不容易出来

4. 实验模拟,已经排除其他因素。当出现卡死的情况,是因为 CreateFile (创建一个空的文件)没有返回导致的,估计系统底层卡死了

      卡死之后,也不能进行其他文件操作,如果操作就系统死掉

尝试了很多方法,基本排除其他因素

后来,发现有一处奇怪地方:

在copy文件的之前,有一个操作 delete。也就是 不管文件是否已经存在U盘,都先delete,然后再对文件进行copy。

逻辑上,这样做并没有错误。

但实际效果,这样做的确存在很大概率性问题,由于CreateFile是API函数,也没底层函数,所以没办法跟踪究竟卡在什么流程上

分析:

当U盘插入时,系统仅仅识别到U盘,并没有读取文件系统?

如果读取文件,是否会读取文件系统?貌似只有有delete或写文件时,才能完整读取文件系统

不知道是否这样。当然也只有这样,系统处理才会快!

先给系统一个删除文件的指令,此时系统发现该U盘未曾识别(文件系统没有缓冲等),系统先加载文件系统

然后给一个创建文件的指令,等系统加载好文件系统,发现删除文件与创建文件存在冲突,估计有锁或保护措施,导致死等!

这样问题就出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值