कैसे segfaulting जब अपाचे से एक कोर डंप पाने के लिए


13

मैंने ऑनलाइन कई स्थानों से निर्देशों का पालन किया है कि कैसे एक अपस्कर्ट से कोर डंप प्राप्त करने के लिए जब यह एक सेगफॉल्ट का उत्पादन कर रहा है, लेकिन यह अभी भी डंप उत्पन्न करने से इनकार करता है।

मेरे पास है:

  1. CoreDumpDirectoryनिर्देश को httpd.confफ़ाइल में जोड़ा और इसे सेट किया/tmp
  2. निष्पादित ulimit -c unlimited
  3. डंप का उपयोग करने के लिए पैटर्न प्रदान किया echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
  4. भी दौड़ा echo 0 > /proc/sys/kernel/core_uses_pid

Httpd को फिर से शुरू किया गया है, लेकिन अभी भी कोई डंप नहीं बना है।

मैं CentOS 5.8 x64 चला रहा हूं httpd-2.2.3-65.el5.centos.3औरphp-5.3.20-13.el5.art

कोई भी सहायताकाफी प्रशंसनीय होगी!


क्या Apache को CoreDumpDirectory निर्देश में आपके द्वारा निर्दिष्ट फ़ाइल पर लिखने की कोई अनुमति है? यह अपाचे के स्वामित्व में होना चाहिए।
वैलेंटाइन बजरमी

मैंने इसे / tmp पर सेट किया है, जो सार्वजनिक रूप से लेखन योग्य है, लेकिन मैं इसे कहीं और
आज़माऊंगा

धन्यवाद - कि एक डंप का उत्पादन किया, हालांकि उस जगह में नहीं जो मैंने इसे सेट किया था! मैं सेट CoreDumpDirectoryकरने के लिए /tmp/dumpsऔर यह करने के लिए छोड़ दिया /tmpसाथ डिबगिंग पर ... अब
chrismcb

मुझे ख़ुशी है कि तुमने उसे ढूँढ लिया!
वैलेंटाइन बजरमी

जवाबों:


7

मेरा जवाब यह है:

  1. निर्देश का पालन करें

    CoreDumpDirectory /tmp/mycoredump

  2. निर्देशिका बनाएँ:

    mkdir -p /tmp/mycoredump

  3. निर्देशिका www-data या httpd पर स्वामित्व असाइन करें

    chown -R www-data:www-data /tmp/mycoredump

  4. इसके लिए अनुमतियां सेट करें:

    chmod 777 /tmp/mycoredump

  5. फिर से शुरू करें:

    service apache2 restart


हां, मैंने इसके बारे में बस किया था, लेकिन यह /tmpवैसे भी डंपिंग को समाप्त कर दिया !
क्रिस्मसब

6
यह chmod 777कुछ भी करने के लिए एक अच्छा विचार नहीं है
sendmoreinfo

1
@sendmoreinfo लेकिन क्या होगा अगर आपका उपयोग मामला पूरी तरह से बाहरी दुनिया के लिए पूरी तरह से परिवर्तनीय और निष्पादन योग्य बना रहा है? ;-)
avgvstvs

8
आपको अपने आप को पैर में गोली मारने की अनुमति है, बस यह उपदेश नहीं दें।
sendmoreinfo

0

ध्यान दें कि यदि आपने अपने में PrivateTmp=trueसेट किया है /usr/lib/systemd/system/apache2.service(या जो भी आपके सिस्टम पर कॉल किया गया है), जिसका अर्थ है अपाचे वास्तव में /tmpकुछ के अंदर की तरह दिखता है /tmp/systemd-private-c27fc5b152d546159d675e170641529b-apache2.service-IcEt0m/, अपाचे उस डायर को लिखने में सक्षम नहीं होगा और आपको कोर डंप नहीं किया जाएगा (कारण के रूप में) करने के लिए systemdtmp निर्देशिका 700 रूट केवल perms वाले)।

समाधान PrivateTmp=falseसर्वर शुरू होने के बाद सिस्टम टैंप डायरेक्टरी की अनुमति को या तो सेट या संशोधित करना है।

मैंने केवल इस पर घंटों बर्बाद किया कि अब आखिरकार महसूस करें कि समस्या क्या थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.