unix多线程问题
今天将一个多线程程序由linux移植到AIX Unix遇到问题,Linux下运行程序正常,但unix下却coredump了,用dbx分析,发现其中有个函数,定义了结构体变量,其空间为129080,如果将该结构体空间改成100,程序能通过。问题:AIX中多线程是不是有什么限制,如栈空间?为啥Linux就可以?
附上:
Segmentation fault in fc_pkg2 at 0x1000207c ($t2)
0x1000207c (fc_pkg2+0x24) 7c21616e stwux r1,r1,r12
(dbx) where
fc_pkg2() at 0x1000207c
test_pthread(data = (nil)), line 29 in "cdb_main.c"
(dbx) x
$r0:0x100038a4 $stkp:0x30006230 $toc:0x300008e0 $r3:0x30006280
$r4:0x30047458 $r5:0x30047408 $r6:0x00000000 $r7:0x30000658
$r8:0x1028c16b $r9:0x1028c16b $r10:0x00000000 $r11:0x00000000
$r12:0xfffe0550 $r13:0x00000000 $r14:0x00000000 $r15:0x00000000
$r16:0x00000000 $r17:0x00000000 $r18:0x00000000 $r19:0x00000000
$r20:0x00000000 $r21:0x00000000 $r22:0x00000000 $r23:0x00000000
$r24:0x00000000 $r25:0x00000010 $r26:0x30047408 $r27:0x100074c4
$r28:0x10007028 $r29:0x00000000 $r30:0x300062b8 $r31:0x30006280
$iar:0x1000207c $msr:0x0000d032 $cr:0x42000224 $link:0x100038a4
$ctr:0xd0132880 $xer:0x20000017 $mq:0x00000000
Condition status = 0:g 1:e 5:e 6:e 7:g
[unset $noflregs to view floating point registers]
[unset $novregs to view vector registers]
in fc_pkg2 at 0x1000207c ($t2)
0x1000207c (fc_pkg2+0x24) 7c21616e stwux r1,r1,r12
附上:
Segmentation fault in fc_pkg2 at 0x1000207c ($t2)
0x1000207c (fc_pkg2+0x24) 7c21616e stwux r1,r1,r12
(dbx) where
fc_pkg2() at 0x1000207c
test_pthread(data = (nil)), line 29 in "cdb_main.c"
(dbx) x
$r0:0x100038a4 $stkp:0x30006230 $toc:0x300008e0 $r3:0x30006280
$r4:0x30047458 $r5:0x30047408 $r6:0x00000000 $r7:0x30000658
$r8:0x1028c16b $r9:0x1028c16b $r10:0x00000000 $r11:0x00000000
$r12:0xfffe0550 $r13:0x00000000 $r14:0x00000000 $r15:0x00000000
$r16:0x00000000 $r17:0x00000000 $r18:0x00000000 $r19:0x00000000
$r20:0x00000000 $r21:0x00000000 $r22:0x00000000 $r23:0x00000000
$r24:0x00000000 $r25:0x00000010 $r26:0x30047408 $r27:0x100074c4
$r28:0x10007028 $r29:0x00000000 $r30:0x300062b8 $r31:0x30006280
$iar:0x1000207c $msr:0x0000d032 $cr:0x42000224 $link:0x100038a4
$ctr:0xd0132880 $xer:0x20000017 $mq:0x00000000
Condition status = 0:g 1:e 5:e 6:e 7:g
[unset $noflregs to view floating point registers]
[unset $novregs to view vector registers]
in fc_pkg2 at 0x1000207c ($t2)
0x1000207c (fc_pkg2+0x24) 7c21616e stwux r1,r1,r12
...全文
相关推荐
UNIX-编程中错误输出的线程安全问题.pdf
总的来说,多线程环境下的错误输出处理是UNIX编程中的一个重要课题。
unix操作系统多线程编程
【Unix操作系统多线程编程】涉及的是在Unix操作系统环境下如何使用多线程技术来实现并发处理,特别是针对生产者-消费者问题和银行家算法的实现。
操作系统 抽烟者问题 Linux Unix
Linux和Unix操作系统提供了丰富的并发控制工具,程序员可以根据具体场景选择合适的同步机制来解决类似抽烟者问题的并发挑战。通过理解和熟练运用这些工具,可以编写出高效、安全的多线程程序。
学习笔记多线程Unix编程
**死锁预防**:死锁是多线程编程中的常见问题,应避免循环等待资源的情况。可以通过银行家算法、资源预留或避免嵌套锁定等策略来预防。7.
Unix-Linux-Windows-OpenMP多线程编程.docx
Unix/Linux 多线程编程 Unix/Linux 多线程编程是指在 Unix/Linux 系统下使用多线程编程技术,通过 POSIX 标准提供的接口来实现多线程编程。


其它技术问题
