幼儿饰品瑜伽美体用品美文
快百科
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

记一次。NET某汽车零件采集系统卡死分析

4月20日 六壬会投稿
  一:背景1。讲故事
  前段时间有位朋友在微信上找到我,说他的程序会出现一些偶发卡死的情况,让我帮忙看下是怎么回事,刚好朋友也抓到了dump,就让朋友把dump丢给我,接下来用windbg探究下到底咋回事。二:WinDbg分析1。程序真的卡死吗
  因为是一个winform程序,验证起来很简单,观察主线程此时在做什么即可。
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26000span:x86spanstylelineheight:26kb
  spanstylecolor:4078f2;lineheight:26CvRegToMachinespan(spanstylelineheight:26x86span)conversionfailurespanstylecolor:a626a4;lineheight:26forspan0x14f
  X86MachineInfo::SetVal:unknownregister0requested
  ChildEBPRetAddrArgstoChild
  00018fe0a877413ff9000009180000000000000000ntdll77530000!NtWaitForSingleObject0xc
  01018fe0a877413f5200000918ffffffff00000000KERNELBASE!WaitForSingleObjectEx0x99
  02018fe0bc1000fe9c00000918ffffffff1000fec0KERNELBASE!WaitForSingleObject0x12
  WARNING:Stackunwindinformationnotavailable。Followingframesmaybewrong。
  03018fe33803d7808a000000000000000000000000USB3101A!USB3101AAUXgetch0xdc
  04018fe35803d7803a0000000000000000000000000x3d7808a
  05018fe3786ff87596046e192803f0297003f02db00x3d7803a
  。。。
  span
  从主线程的线程栈看,托管代码调用了非托管的USB3101A!USB3101AAUXgetch方法,然后在NtWaitForSingleObject方法上等待,熟悉NtWaitForSingleObject方法的朋友都知道,它的第一个参数是句柄类型,签名如下:
  spanstylelineheight:26NTSTATUSspanstylecolor:4078f2;lineheight:26NtWaitForSingleObjectspanspanstylelineheight:26(
  〔in〕HANDLEHandle,
  〔in〕BOOLEANAlertable,
  〔in〕PLARGEINTEGERTimeout
  )
  有了这个信息,我们可以用windbg提取ntdll77530000!NtWaitForSingleObject方法的第一个参数00000918。
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26000span:x86!handlespanstylecolor:986801;lineheight:2600000918spanf
  Handlespanstylecolor:986801;lineheight:2600000918span
  TypeMutant
  Attributesspanstylecolor:986801;lineheight:260span
  GrantedAccessspanstylecolor:986801;lineheight:260x1f0001span:
  Delete,ReadControl,WriteDac,WriteOwner,Synch
  QueryState
  HandleCountspanstylecolor:986801;lineheight:262span
  PointerCountspanstylecolor:986801;lineheight:2659730span
  NameSessionsspanstylecolor:986801;lineheight:269spanBaseNamedObjectsUSB3101ALOCKspanstylecolor:986801;lineheight:260span
  Objectspecificinformation
  MutexisOwned
  MutantOwnerspanstylecolor:986801;lineheight:261334。1spanec0
  从输出信息的MutantOwner1334。1ec0来看,这是一个mutex锁,当前这个锁被1134号进程中的1ec0线程持有,我们都知道mutex是可以跨进程的,接下来疑问就来了,难道这个锁被其他的进程持有后不释放吗?那到底是不是其他进程呢?可以用看下当前进程的进程号。spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26000span:x86
  。spanstylecolor:986801;lineheight:260spanId:spanstylecolor:986801;lineheight:261334。1e74spanSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:26016spanee000Unfrozen
  spanstylecolor:986801;lineheight:261spanId:spanstylecolor:986801;lineheight:261334。1354spanSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:26016fspana000Unfrozen
  spanstylecolor:986801;lineheight:262spanId:spanstylecolor:986801;lineheight:261334。2spanc30Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:26016fspand000Unfrozen
  spanstylecolor:986801;lineheight:263spanId:spanstylecolor:986801;lineheight:261334。spandb4Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601706000spanUnfrozen
  spanstylecolor:986801;lineheight:264spanId:spanstylecolor:986801;lineheight:261334。2spanac4Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:260170fspan000Unfrozen
  spanstylecolor:986801;lineheight:265spanId:spanstylecolor:986801;lineheight:261334。spand54Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601718000spanUnfrozen
  spanstylecolor:986801;lineheight:266spanId:spanstylecolor:986801;lineheight:261334。4fspancSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:260171bspan000Unfrozen
  spanstylecolor:986801;lineheight:267spanId:spanstylecolor:986801;lineheight:261334。241spancSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601727000spanUnfrozen
  spanstylecolor:986801;lineheight:268spanId:spanstylecolor:986801;lineheight:261334。2464spanSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601733000spanUnfrozen
  spanstylecolor:986801;lineheight:269spanId:spanstylecolor:986801;lineheight:261334。1spanec0Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:260175spand000Unfrozen
  spanstylecolor:986801;lineheight:2610spanId:spanstylecolor:986801;lineheight:261334。3bspanc4Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601790000spanUnfrozen
  spanstylecolor:986801;lineheight:2611spanId:spanstylecolor:986801;lineheight:261334。2844spanSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:2601799000spanUnfrozen
  spanstylecolor:986801;lineheight:2612spanId:spanstylecolor:986801;lineheight:261334。2spana88Suspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:260179spanc000Unfrozen
  spanstylecolor:986801;lineheight:2613spanId:spanstylecolor:986801;lineheight:261334。2190spanSuspend:spanstylecolor:986801;lineheight:260spanTeb:spanstylecolor:986801;lineheight:260179fspan000Unfrozen
  从输出看1334。1ec0来看,mutex是被本进程的9号线程持有,是本进程就好办了。2。为什么9号线程不释放
  带着好奇心立刻切到9号线程上观察它的托管和非托管栈。
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26009span:x86!clrstack
  OSThreadId:spanstylecolor:986801;lineheight:260x1ec0span(spanstylecolor:986801;lineheight:269span)
  ChildSPIPCallSite
  spanstylecolor:986801;lineheight:260395spanec00spanstylecolor:986801;lineheight:260000002bspan〔InlinedCallFrame:spanstylecolor:986801;lineheight:260395spanec00〕
  spanstylecolor:986801;lineheight:260395spanebfcspanstylecolor:986801;lineheight:260spandbfc91dDomainBoundILStubClass。ILSTUBPInvoke(IntPtr,Int16〔〕,UInt32,UInt32ByRef,UInt32ByRef,Double)
  spanstylecolor:986801;lineheight:260395spanec00spanstylecolor:986801;lineheight:260spandbfc3e0〔InlinedCallFrame:spanstylecolor:986801;lineheight:260395spanec00〕xxxx。USB3101AAIReadBinary(IntPtr,Int16〔〕,UInt32,UInt32ByRef,UInt32ByRef,Double)
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26009span:x86spanstylelineheight:26kb
  spanstylecolor:4078f2;lineheight:26CvRegToMachinespan(spanstylelineheight:26x86span)conversionfailurespanstylecolor:a626a4;lineheight:26forspan0x14f
  X86MachineInfo::SetVal:unknownregister0requested
  ChildEBPRetAddrArgstoChild
  000395e4c077447a94000009100000000000000000ntdll77530000!NtWaitForSingleObject0xc
  010395e4c07665fc4b000009100022004b0395e524KERNELBASE!DeviceIoControl0x35404
  020395e4ec1000c5bb000009100022004b0395e524kernel32!DeviceIoControlImplementation0x4b
  WARNING:Stackunwindinformationnotavailable。Followingframesmaybewrong。
  03000009101000f7ea000107e70010000100220009USB3101A!USB3101ASetPassword0x24b
  040403a7b47292cc680438b5d4000000000000000cUSB3101A!USB3101AE2PUpdateToFirmware0x10a
  0500000000775a2b1c77413ff90000091800000000clr!StringObject::NewString0x4c
  060000000077413ff9000009180000000077414016ntdll77530000!NtWaitForSingleObject0xc
  070000000010022e610395e7a000000000e9c915c7KERNELBASE!WaitForSingleObjectEx0x99
  span
  从输出信息看,DeviceIoControl是一个非常底层的Win32API接口,看了下文档说是给指定的驱动设备下达指令,了,那它在等待什么呢?用同样的方式提取00000910参数。
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26009span:x86!handlespanstylecolor:986801;lineheight:2600000910spanf
  Handlespanstylecolor:986801;lineheight:2600000910span
  TypeFile
  Attributesspanstylecolor:986801;lineheight:260span
  GrantedAccessspanstylecolor:986801;lineheight:260x12019fspan:
  ReadControl,Synch
  ReadList,WriteAdd,AppendSubDirCreatePipe,ReadEA,WriteEA,ReadAttr,WriteAttr
  HandleCountspanstylecolor:986801;lineheight:262span
  PointerCountspanstylecolor:986801;lineheight:2659992span
  Nospanstylecolor:a626a4;lineheight:26objectspanspecificinformationavailable
  从输出信息看,这是一个file类型的句柄,既然朋友说卡死,那就说明9号线程在这个handle上一直等待或者由于各种情况出不来,那为什么出不来呢?3。为什么不能全身而退
  既然9号线程不能很好的退出非托管操作,内部可能发生了什么错误,要想提取当前线程在win32层面是否发生错误,可以用windbg的!gle命令,
  spanstylecolor:986801;lineheight:260span:spanstylecolor:986801;lineheight:26009span:x86!gle
  LastErrorValue:(Win32)spanstylecolor:986801;lineheight:260xb7span(spanstylecolor:986801;lineheight:26183span)Unabletospanstylecolor:a626a4;lineheight:26getspanerrorcodetext
  LastStatusValue:(NTSTATUS)spanstylecolor:986801;lineheight:260spanSTATUSSUCCESS
  Wow64TEBstatus:spanstylecolor:986801;lineheight:2624506368span
  LastErrorValue:(NTSTATUS)spanstylecolor:986801;lineheight:260span(spanstylecolor:986801;lineheight:260span)STATUSSUCCESS
  LastStatusValue:(NTSTATUS)spanstylecolor:986801;lineheight:260spanSTATUSSUCCESS
  从输出信息看,当前报了一个0xb7的错误,不过可惜的是现在!error不能很好的展示错误信息,只能到msdn上去查,参考链接:https:learn。microsoft。comenuswindowswin32debugsystemerrorcodes0499
  分析到这里,逻辑大概就捋清楚了。1号线程等待9号线程释放mutex锁。9号线程意外出现了错误得不到退出,导致mutex锁不能释放。
  接下来就是让朋友重点看下9号线程的线程栈,为什么会出现重复创建的逻辑,毕竟涉及到了业务逻辑,我也只能帮到这里了。三:总结
  这种类型的dump分析起来还是挺锻炼分析基本功的,文章中涉及到了一些windbg命令的使用技巧,相信大家会有收获的。
投诉 评论 转载

突然钻心痛,男子被紧急送医!罪魁祸首是他爱喝的这杯茶保温杯配上养生茶已成为一些人的标配带火的不仅是各种花色的保温杯还有各种养生茶茶的功效很多人耳熟能详:清热降火、降压降脂殊不知这类植物长期泡水喝的养生茶不但不能养生还会喝出……轻松查询自媒体数据,让你的工作更加顺畅!轻松查询自媒体数据,让你的工作更加顺畅,随着移动互联网的迅猛发展,自媒体已经成为了现代社会中不可或缺的一部分。自媒体平台如雨后春笋般涌现,人们可以通过自媒体平台发布文章,……85后小花顶流女星,有你不知道的样子吗娱乐圈的女明星几乎每天都处于一个争奇斗艳的状态,都是拥有攀比的心态,所以只要一到走红毯或者是其他酒会场合活动的情况,就会打扮成花枝招展、穿的千姿百态的模样,平时演戏的时候镜头拉……朱波国足出场排名高居第二的低调高手大头李玮峰谁也不陌生,他是范志毅之后国家队中综合能力最强的中后卫,职业生涯为国家队出场112次,雄居榜首。而再往下翻,有两个人曾同为国家队出场111次,其中一人是范大将军……最新消息两则北控队未来的计划,张帆喜事连连作品内容:通俗易懂的语言,与众不同的评论。专注于CBA联赛,全面呈现北控男篮最新、最准确的消息,为您带来鲜为人知的真实故事,给您展现不一样的篮球视角。专注于CBA联赛……今年第一季PC出货量下滑29,Mac机种下滑情况更明显依照市调机构Canalys、IDC统计数据显示,PC出货量在今年第一季出现2932。6之间的跌幅,包含联想、HP、Dell、苹果、华硕在内品牌的PC出货量都出现24。145。5……大湾区建设进展情况如何?我是香菇君我来给大家评价下大湾区建设,大湾区建设是中国政府近年来推动的一个重要战略,旨在加强珠江三角洲地区的经济一体化,推动区域协同发展,提高整个区域的综合竞争力。以下是大湾区……特拉斯连续降价,是成就了特斯拉,还是对其他新能源汽车造成冲击最近几乎所有的新能源汽车全部降价销售,是什么原因造成的呢?好多人认为是新能源汽车电池的制造原料降价造成的新能源汽车降价的,新能源汽车电池原料降价也是一部分原因,但是这个不是真正……小个子穿衣思路!视觉显高10cm!我来看看谁还不信我1158小个子穿衣思路。发视频以来收到过最多的评论,你这看视频跟米7一样,就看这期小个子穿搭思路。别的我不敢多说,视觉增高十公分。先说公式:上短。1)上衣。来看……汉密尔顿梅奔不需要迈凯伦那样的技术改革头条创作挑战赛刘易斯汉密尔顿否认梅赛德斯需要进行类似于迈凯轮目前正在进行的技术改革。迈凯伦没能达到在冬季为MCL60赛车设定的开发目标后,他们经历了2023赛季的艰……螺旋形图案为了解高质量恒星如何形成提供了新的线索最近的观测发现,在一颗年轻的高质量原星周围的物质盘中出现了螺旋状的图案,这表明盘中存在着引力不稳定。这一发现对高质量恒星如何形成具有重要意义。在恒星形成的过程中,原星盘是向其核……记一次。NET某汽车零件采集系统卡死分析一:背景1。讲故事前段时间有位朋友在微信上找到我,说他的程序会出现一些偶发卡死的情况,让我帮忙看下是怎么回事,刚好朋友也抓到了dump,就让朋友把dump丢给我,接下来用……
三星Galaxymini拔刀,5000万120Hz4nm,小史上最靠谱的买电视攻略,快来查收苹果大势已去?不要污了华为盘点上半年定档的33部影片,电影市场春天进行时游客在大理吃饭,每个菜尝两口觉得难吃,要求店家退一半餐费!店那个去香港验血,回来流掉的孩子专访王海兰我的女儿漫江红走,阳宗海华侨城泡汤露营溜萌宠开发商Bloober有机会的话可能会制作灵媒续集隔夜茶还能喝吗?立春咬春吃春饼,中医角度很重要,养生吃法来啦
重庆的旅游景点分布在哪里?浅析法律逻辑在法律及社会活动中的作用我的业余爱好关于公司调研报告查男朋友开房记录可以去宾馆查吗(怎么查开宾馆记录)旅游集散中心和跟旅行团有什么不同我真佩服他丰胸抗肿瘤的百益果王这段迟到了40年的师生恋给他们带来一个孙子,还有无数猜测朋友贵在真快乐是什么热评聚热点网 假如,先有鸿蒙后有天

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找漯河衢州兴义眉山桂林阳泉玉溪简阳山东遂宁永城新余梧州洛阳泸州温州临汾清远营口常熟浙江大连桐乡宜昌