- 主题:Linux应用程序新创建一个线程,线程栈是放在哪里的?
是有固定的地方,还是在内存空间动态申请个地址,随机的?
--
FROM 123.125.47.*
随机
--
FROM 114.92.145.*
线程可以有无穷多个。不会是固定的位置。每个栈用 mmap 申请一段内存作为线程的栈空间。你可以搜一下 MAP_STACK 和 MAP_GROWSDOWN,都是专门为栈空间设计的。一起使用时,线程可以申请 128M 的栈空间,但实际系统只分配 64K,剩下的等用到了再分配。
【 在 wjhtingerx 的大作中提到: 】
: 是有固定的地方,还是在内存空间动态申请个地址,随机的?
--
FROM 117.28.152.*
就是说这栈空间完全没有保护的对吧?进程里任何瞎写都可能把某个线程的栈破坏掉吧?
【 在 hgoldfish 的大作中提到: 】
: 线程可以有无穷多个。不会是固定的位置。每个栈用 mmap 申请一段内存作为线程的栈空间。你可以搜一下 MAP_STACK 和 MAP_GROWSDOWN,都是专门为栈空间设计的。一起使用时,线程可以申请 128M 的栈空间,但实际系统只分配 64K,剩下的等用到了再分配。
:
--
FROM 120.245.118.*
对
- 来自 水木社区APP v3.5.7
【 在 wjhtingerx 的大作中提到: 】
: 就是说这栈空间完全没有保护的对吧?进程里任何瞎写都可能把某个线程的栈破坏掉吧?
--
FROM 39.144.107.*
那这样的话,程序里某个bug把其他某个线程栈写了,然后这个线程栈崩了,这种问题怎么查?感觉毫无迹象可循啊
【 在 nh26223 的大作中提到: 】
: 对
: - 来自 水木社区APP v3.5.7
--
FROM 123.125.47.*
你要担心这个问题的话
你应该去用多进程
【 在 wjhtingerx 的大作中提到: 】
: 那这样的话,程序里某个bug把其他某个线程栈写了,然后这个线程栈崩了,这种问题怎么查?感觉毫无迹象可循啊
--
FROM 107.204.171.*
如果现有工程,出了这类问题的话,该如何排查?
【 在 BigCarrot 的大作中提到: 】
: 你要担心这个问题的话
: 你应该去用多进程
:
--
修改:wjhtingerx FROM 123.125.47.*
FROM 123.125.47.*
试试tsan,不知道有没有用
【 在 wjhtingerx 的大作中提到: 】
: 如果现有工程,出了这类问题的话,该如何排查?
--
FROM 107.204.171.*
可以把工程的不同模块关闭,二分法试探,等待...
或者看被覆盖的位置写入了什么东西,什么地方会写入这一类东西,然后猜。
【 在 wjhtingerx 的大作中提到: 】
: 如果现有工程,出了这类问题的话,该如何排查?
--
FROM 117.133.52.*