我已经明白了设置-bmaxdata或LDR_CNTRL=MAXDATA.在AIX上,64位应用程序只需要设置进程的堆大小限制。换句话说,没有必要提高32位可执行文件的限制。
在特定的AIX7.1系统上,其中OBJECT_MODE=64 dump -ov my-executable
显示最大数据为0x00000000,而LDR_CNTRL未设置,我必须设置LDR_CNTRL=MAXDATA.对于我们在旧的32位构建中设置的2GB-ish号,我们甚至可以初始化我的64位应用程序(initgroup() fails,pthread_create fails等)。
是否有必要在64位进程中设置MAXDATA以避免在堆大小上设置一个古老的256 in的限制?
# /usr/bin/ulimit -a
time(seconds) unlimited
file(blocks) 2097151
data(kbytes) 131072
stack(kbytes) 32768
memory(kbytes) 32768
coredump(blocks) 2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user) unlimited
# OBJECT_MODE=64 dump -ov bin/httpd
bin/httpd:
***Object Module Header***
# Sections Symbol Ptr # Symbols Opt Hdr Len Flags
4 0x000c78b0 8683 120 0x1002
Flags=( EXEC DYNLOAD DEP_SYSTEM )
Timestamp = "Oct 05 19:03:19 2015"
Magic = 0x1f7 (64-bit XCOFF)
***Optional Header***
Tsize Dsize Bsize Tstart Dstart
0x0007c66a 0x00009d06 0x00003c08 0x1000001f8 0x110000862
SNloader SNentry SNtext SNtoc SNdata
0x0004 0x0002 0x0001 0x0002 0x0002
TXTalign DATAalign TOC vstamp entry
0x0007 0x0003 0x1100091b8 0x0001 0x110003a70
maxSTACK maxDATA SNbss magic modtype
0x00000000 0x00000000 0x0003 0x010b 1L
发布于 2016-01-19 21:55:28
您的示例中的限制因素是ulimit 'data‘值。如果设置为“无限”,您将观察到预期的输出。
https://stackoverflow.com/questions/34886419
复制相似问题