相关疑难解决方法(0)

没有Args的KeWaitForSingleObject

我目前正在尝试调试系统死锁,我很难理解这一点.

Child-SP          RetAddr           : Args to Child                                                           : Call Site
fffff880`035cb760 fffff800`02ecef72 : 00000000`00000002 fffffa80`066e8b50 00000000`00000000 fffffa80`066a16e0 : nt!KiSwapContext+0x7a
fffff880`035cb8a0 fffff800`02ee039f : fffffa80`0b9256b0 00000000`000007ff 00000000`00000000 00000000`00000000 : nt!KiCommitThreadWait+0x1d2
fffff880`035cb930 fffff880`0312a5e4 : 00000000`00000000 fffff800`00000000 fffffa80`079a3c00 00000000`00000000 : nt!KeWaitForSingleObject+0x19
Run Code Online (Sandbox Code Playgroud)

为什么KeWaitForSingleObject的第一个参数为null?

除非我误解不是第一个参数正在等待的对象?死锁只是说这个线程没有等待或是这种普通的行为吗?

另外,我看到另一个显示类似堆栈跟踪的进程(services.exe):

1: kd> .thread fffffa800d406b50
Implicit thread is now fffffa80`0d406b50
1: kd> kv
  *** Stack trace for last set context - .thread/.cxr resets it
Child-SP          RetAddr           : Args to Child                                                           : Call Site
fffff880`09ed4800 fffff800`02ecef72 : fffffa80`0d406b50 fffffa80`0d406b50 00000000`00000000 fffff8a0`00000000 : …
Run Code Online (Sandbox Code Playgroud)

windows windows-nt windbg

4
推荐指数
1
解决办法
711
查看次数

优化c ++编译器如何重用函数的堆栈槽?

优化c ++编译器如何确定该函数何时不再需要函数的堆栈槽(函数的堆栈帧的一部分),以便它可以重用其内存?.
通过堆栈槽我是指函数堆栈帧的一部分,不一定是函数的整个堆栈帧,并且澄清问题的一个例子是,假设我们有一个函数,在其作用域中定义了六个整数变量,当它的时间在函数中使用第六个变量,第五个变量变得无用,因此编译器可以对第五个和第六个变量使用相同的内存块.
有关此主题的任何信息表示赞赏.

c++ memory compiler-construction optimization stack

2
推荐指数
1
解决办法
1345
查看次数