首页 > 其他分享 >判断线程栈爆掉的一种方法

判断线程栈爆掉的一种方法

时间:2023-01-05 11:14:17浏览次数:37  
标签:判断 StackBase 00000000 StackLimit 线程 爆掉 1M

就是TEB::StackBase-TEB::StackLimit的值约为线程栈保留大小(VC++编译器默认的是1M),就可以判断栈 爆掉了

比如:

!teb
TEB at 01192000
    ExceptionList:        0120134c
    StackBase:            01300000
    StackLimit:           01201000
    SubSystemTib:         00000000
    FiberData:            00001e00
    ArbitraryUserPointer: 00000000
    Self:                 01192000
    EnvironmentPointer:   00000000
    ClientId:             00004b7c . 000059d4
    RpcHandle:            00000000
    Tls Storage:          1a17b928
    PEB Address:          0118f000
    LastErrorValue:       0
    LastStatusValue:      c0000034
    Count Owned Locks:    0
    HardErrorMode:        0

?StackBase-StackLimit=01300000-01201000=1044480B=1020K加上保护页4K,就是1024K=1M了。

又比如:

0:000> !teb
TEB at 002bf000
    ExceptionList:        001cfd78
    StackBase:            001d0000
    StackLimit:           000d1000
    SubSystemTib:         00000000
    FiberData:            00001e00
    ArbitraryUserPointer: 00000000
    Self:                 002bf000
    EnvironmentPointer:   00000000
    ClientId:             00002d60 . 000044e4
    RpcHandle:            00000000
    Tls Storage:          0069d808
    PEB Address:          002bc000
    LastErrorValue:       0
    LastStatusValue:      0
    Count Owned Locks:    0
    HardErrorMode:        0
?StackBase-StackLimit==001d0000-000d1000=1020K加上保护页4K,也是1024K=1M了。

标签:判断,StackBase,00000000,StackLimit,线程,爆掉,1M
From: https://www.cnblogs.com/yilang/p/16672633.html

相关文章

  • 判断数据是否为nan的三种方式
    一、numpy判断importnumpyasnpnan=float('nan')print(np.isnan(nan))二、pandas判断importpandasaspdnan=float('nan')print(pd.isna(nan))三、和自......
  • 线程6 - wait和sleep
    wait和sleep方法比较含义wait:等待,需要等待其他对象来结束该状态sleep:休眠,一定时长后自动醒来从属关系wait:Object类中声明定义的方法,成员方法,所有对象都可使用sl......
  • CPU爆了,你却连那个线程出问题都不知道?
    转载自:https://mp.weixin.qq.com/s/FvmlnV-oKNxrK5glrFKPHA如何看查占用cpu最多的进程?方法一核心指令:ps实际命令:psH-eopid,pcpu|sort-nk2|tail执行效果如下:[work@......
  • 线程4 - 线程池
    线程池线程对象的容器4种比较常见的线程池创建固定数量的线程对象ExecutorServiceexecutorService=Executors.newFixedThreadPool(3);根据需要动态创建线......
  • 自定义线程池
    自定义线程池packagecom.intell.config;​importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importor......
  • js 判断数组是否有重复数据
    博客链接:https://www.cnblogs.com/jameshappy/archive/2013/07/22/3207404.html在vue项目我用的是第二种方法letlist=dataList.map((d)=>d.khId+d.productCode);......
  • C# 多线程 术语
    前言本文只是为了复习,巩固,和方便查阅,一些知识点的详细知识会通过相关链接和文献标记出来。概念和术语TPLTaskParallelLibrary任务并行库PLINQParallel LINQ并......
  • 查看进程、线程的方式
    一、Windowstasklist查看所有的进程taskkill杀死进程使用tasklist|findstrjava命令列出所有的java进程信息通过上图可以发现,所有的java进程都列出来了,但......
  • @NonNull 注解小记——非空判断的触发时机区别
    背景@NonNull:关于这个注解,lombok的一个注解,可以加在方法-入参,或构造函数上。本以为加了这个参数,会自动判断(编译阶段)会判断,但发现并不是这个意思。因为在编译的时候,传......
  • 多线程1
    多线程1一个进程可以有多个线程process、threadmain()主线程还可以运行其他线程线程创建继承Thread类、实现Runnable(接口)、实现Callable(接口)继承Thread,重写()run方法......