- 主题: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.*