การเพิ่มขีด จำกัด ของสแต็กใน OS X Yosemite


12

ฉันกำลังมองหาวิธีการ (ไม่จำเป็นต้องถาวร) เพิ่มขนาดสแต็กที่มีให้กับแอปพลิเคชันเทอร์มินัลใน OS X 10.10

ฉันรู้ว่ามีคำถามจำนวนมากที่เกี่ยวข้องกับการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมรวมถึงการ จำกัด สแต็กบนอินเทอร์เน็ตและโดยเฉพาะอย่างยิ่งที่นี่ (เช่นนี้ ) แต่ไม่มีวิธีแก้ปัญหาที่เสนอที่ฉันพบว่าทำงานได้สำหรับฉัน

สิ่งที่ฉันได้รับมากที่สุดlaunchctlคือการใช้sudo launchctl limit stack 67104768 67104768ที่ 67104768 เป็นขีด จำกัด ฮาร์ดเริ่มต้น launchctlคำสั่งอื่นที่มีขีด จำกัด สูงกว่าดูเหมือนจะไม่มีผลกระทบ

จากนั้นก็มีsysctlแต่หน้าkern.stack_sizeคู่มือรายงานว่าไม่สามารถเปลี่ยนแปลงได้

ฉันหวังว่าฉันจะไม่มองข้ามวิธีแก้ปัญหาใด ๆ ที่ได้รับการเสนอแล้วบางแห่ง; ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

แก้ไข: ฉันต้องการเพิ่มขีด จำกัด ของสแต็กเพื่อหลีกเลี่ยงสิ่งที่ดูเหมือนว่าจะเป็นข้อบกพร่องใน ocamlopt, คอมไพเลอร์ดั้งเดิมของ OCaml ที่สแต็คโอเวอร์โฟลว์ประมวลผลโปรแกรมพิเศษ (สมเหตุสมผล); ฉันไม่สามารถหารายงานข้อผิดพลาดได้ในขณะนี้


1
คุณกำลังถามอย่างชัดเจนถึงวิธีเพิ่มขีด จำกัด ของกองโยเซมิตีหรือไม่?

1
ใช่. ขออภัยหากไม่ชัดเจนจากข้อความ
คริสโตเฟอร์

1
ฉันพบคำถามที่superuser.com/questions/836883/…ที่อาจช่วยคุณได้ ... ในคำตอบแรกมันแสดงขีด จำกัด สูงสุดของไฟล์ อาจเปลี่ยนเป็น stack limit และบันทึกเป็นlimit.stack.plistlaunchDaemons ใช่ไหม
TheBro21

1
ขอบคุณ! ฉันแค่ลองมัน แต่ก็ไม่มีโชค
Christopher

1
ตกลง. และคุณพบไฟล์ จำกัด จริงหรือไม่ ถ้ามันไม่ได้มี ฉันจะใช้เวลาค้นหามันและแก้ไขปัญหา และการกำหนดค่าที่ฉันสั่งไว้ก่อนหน้านี้
TheBro21

คำตอบ:


5

วิธีหนึ่งในการเพิ่มขนาดสแต็กคือการใช้ulimit:

shell> ulimit -s new_size_in_kb

เพียงจำไว้ว่าดูเหมือนว่าจะมีข้อ จำกัด อย่างหนักเกี่ยวกับจำนวนสแต็กที่มีขนาดใหญ่บน OSX และขีด จำกัด นั้นมีค่าเป็น 65532 kb:

shell> ulimit -s 65533
ulimit: value exceeds hard limit
shell> ulimit -s 65532
shell> ulimit -a | grep stack
-s: stack size (kbytes)             65532

นอกจากนี้ยังulimit -sเป็นการชั่วคราวและรีเซ็ตเมื่อขั้วปลายเซสชั่น

หากคุณต้องการให้แน่ใจว่าสแต็กเพิ่มขึ้นสำหรับทุกเซสชันเทอร์มินัลคุณสามารถใส่ulimit -sคำสั่งใน. zshrc หรือเทียบเท่า


ขอบคุณสำหรับสิ่งนั้น! น่าเสียดายในกรณีนี้ฉันต้องเพิ่มขนาดสแต็กเกินขีด จำกัด ที่ยากของ OSX และฉันหวังว่าจะหาวิธีแก้ปัญหาที่เพิ่มขีด จำกัด นี้
คริสโตเฟอร์

ใช่: ulimit -s unlimitedดูเหมือนว่าจะถูก จำกัด ที่ 65532 Kb: ulimit -a | grep stackให้-s: stack size (kbytes) 65532
fpierfed
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.