অ্যাপাচে ত্রুটিতে "[বিজ্ঞপ্তি] চাইল্ড পিড XXXX প্রস্থান সিগন্যাল সেগমেন্টেশন ফল্ট (11)"


102

আমি অ্যাপাচি / পিএইচপি / মাইএসকিউএল স্ট্যাক ব্যবহার করছি।
ফ্রেমওয়ার্ক কেকপিএইচপি হিসাবে ব্যবহার করা হচ্ছে।

প্রতিবার এবং পরে আমি একটি ফাঁকা সাদা পৃষ্ঠা পাই। আমি এটি কেকের মাধ্যমে ডিবাগ করতে পারছি না, তাই আমি অ্যাপাচি ত্রুটিটি দেখেছি। লগ এবং আমি যা পাই তা এখানে:

[Wed Oct 12 15:27:23 2011] [notice] child pid 3580 exit signal Segmentation fault (11)
[Wed Oct 12 15:27:34 2011] [notice] child pid 3581 exit signal Segmentation fault (11)
[Wed Oct 12 15:30:52 2011] [notice] child pid 3549 exit signal Segmentation fault (11)
[Wed Oct 12 16:04:27 2011] [notice] child pid 3579 exit signal Segmentation fault (11)
zend_mm_heap corrupted
[Wed Oct 12 16:26:24 2011] [notice] child pid 3625 exit signal Segmentation fault (11)
[Wed Oct 12 17:57:24 2011] [notice] child pid 3577 exit signal Segmentation fault (11)
[Wed Oct 12 17:58:54 2011] [notice] child pid 3550 exit signal Segmentation fault (11)
[Wed Oct 12 17:59:52 2011] [notice] child pid 3578 exit signal Segmentation fault (11)
[Wed Oct 12 18:01:38 2011] [notice] child pid 3683 exit signal Segmentation fault (11)
[Wed Oct 12 22:20:53 2011] [notice] child pid 3778 exit signal Segmentation fault (11)
[Wed Oct 12 22:29:51 2011] [notice] child pid 3777 exit signal Segmentation fault (11)
[Wed Oct 12 22:33:42 2011] [notice] child pid 3774 exit signal Segmentation fault (11)

এই বিভাগকরণ ত্রুটিটি কী এবং আমি কীভাবে এটি ঠিক করতে পারি?

হালনাগাদ:

PHP Version 5.3.4, OSX local development
Server version: Apache/2.2.17 (Unix)
CakePhp: 1.3.10

কনফিগারেশন সম্পর্কিত আরও তথ্যের প্রয়োজন, উদাহরণস্বরূপ যদি পিএইচপি এবং ব্যবহৃত মডিউলগুলির সংস্করণগুলি আপ টু ডেট থাকে এবং আপনি যদি কিছু ধরণের ক্যাচিং বা এক্সিলারেটর ব্যবহার করেন।
কোডকাস্টার

আপনার কী তথ্য প্রয়োজন এবং এটি কীভাবে পাবেন তা আপনি আমাকে বলতে পারেন, তাই আমি এটি পোস্ট করতে পারি?
এমজিপিপি

: এছাড়াও এই পরীক্ষা stackoverflow.com/questions/15689765/...
trante

আমি আমার এপাচি লগগুলিতে ইদানীং সেগফল্টেও অনেক ছিল (11)। খনিটি এপিসির কারণে হয়েছিল এবং তত্ক্ষণাত ত্রুটিগুলি বন্ধ হয়ে গেলাম আমি আবার পিএইচপি তে এপিসি অক্ষম করলাম। তবে আপনার এর আরও অনেক কারণ হতে পারে।
মিলাই ডট কম

উত্তর:


66

কোনও একটি জিডিডি-কে এইচডিডি চাইল্ড প্রসেসের সাথে সংযুক্ত করুন এবং পুনরায় লোড করুন বা কাজ চালিয়ে যান এবং ক্র্যাশের জন্য অপেক্ষা করুন এবং তারপরে ব্যাকট্র্যাসটি দেখুন। এরকম কিছু করুন:

$ ps -ef|grep httpd
0     681     1   0 10:38pm ??         0:00.45 /Applications/MAMP/Library/bin/httpd -k start
501   690   681   0 10:38pm ??         0:00.02 /Applications/MAMP/Library/bin/httpd -k start

...

এখন শিশু প্রসেসগুলির মধ্যে একটিতে জিডিবি সংযুক্ত করুন, এই ক্ষেত্রে পিআইডি 690 (কলামগুলি ইউআইডি, পিআইডি, পিপিআইডি, ...)

$ sudo gdb
(gdb) attach 690
Attaching to process 690.
Reading symbols for shared libraries . done
Reading symbols for shared libraries ....................... done
0x9568ce29 in accept$NOCANCEL$UNIX2003 ()
(gdb) c
Continuing.

ক্রাশের জন্য অপেক্ষা করুন ... তারপরে:

(gdb) backtrace

বা

(gdb) backtrace full

কি চলছে তা আপনাকে কিছুটা ক্লু দেওয়া উচিত। আপনি যদি একটি বাগ রিপোর্ট ফাইল করেন তবে আপনার ব্যাকট্র্যাসটি অন্তর্ভুক্ত করা উচিত।

ক্র্যাশটি পুনরুত্পাদন করা যদি শক্ত হয় তবে কেবলমাত্র অনুরোধগুলি পরিচালনা করার জন্য একটি শিশু প্রক্রিয়া ব্যবহার করার জন্য অ্যাপাচি কনফিগার করা ভাল ধারণা হতে পারে। কনফিগারেশনটি এরকম কিছু:

StartServers 1
MinSpareServers 1
MaxSpareServers 1

4
আমি কেবল এটির মধ্যে চলে এসেছি এবং মনে হয় যখন আমি একটি শিশু প্রক্রিয়াতে জিডিবি সংযুক্ত করি তখন আমি সেগফল্ট পাই না এবং অ্যাপাচি কখনও পৃষ্ঠাটি রেন্ডারিং শেষ করে না। (অন্যথায় সেগফল্টকে পুনরুত্পাদন করা প্রতিটি রিলোডে যেমন রিফ্রেশ হয় তেমন হিট করার বিষয়)। আমার সি দিনগুলিতে আমি ধাতব সরঞ্জামচেনগুলির সাথে আরও ঘনিষ্ঠভাবে কাজ করেছি বলে কিছুক্ষণ হয়ে গেছে। আমি কেন এই আচরণটি প্রদর্শিত হতে পারে তা অবাক করি। এটি আমার বিল্ড থেকে প্রচুর প্রতীক খুঁজে পায়নি, তবে এটি কেবল একটি কম তথ্যমূলক ব্যাকট্র্যাস নং তৈরি করতে হবে?
lucian303

হুম অদ্ভুত। আপনি কি নিশ্চিত করতে পারেন যে সিগফাল্টগুলি যে প্রক্রিয়াটি আসলে আপনার সাথে জিডিবি সংযুক্ত রয়েছে সেটাই? dmesgসেগফোল্টেড প্রক্রিয়াটির পিডের জন্য পরীক্ষা করুন ।
ম্যাটিয়াস ওয়াদম্যান

জিডিবি কাজ করে না। আমাকে দেয়Unable to access task for process-id 70: (os/kern) failure.
এমজিপিপি

এটি কি ওএসএক্স? হতে পারে স্ট্যাকওভারফ্লো.com
questions/11504377/…

4
সমাধান পাওয়া: কল set follow-fork-mode childএবং তারপর পিতা বা মাতা প্রক্রিয়া সংযুক্ত (এক যে spawns চাইল্ড প্রসেস) -> stackoverflow.com/questions/15126925/...
maxgalbu

24

একটি segementation ত্রুটি পিএইচপি মধ্যে অভ্যন্তরীণ ত্রুটি (বা সম্ভবত কম, অ্যাপাচি)। প্রায়শই, বিভাগগুলির ত্রুটি ইমেলমাজিক বা সাবভার্সনের মতো আরও নতুন এবং কম-পরীক্ষিত পিএইচপি মডিউলগুলির কারণে ঘটে।

সমস্ত অপ্রয়োজনীয় মডিউলগুলি (ইন php.ini) অক্ষম করার চেষ্টা করুন এবং তারপরে ত্রুটি দেখা না দেওয়া পর্যন্ত একে একে একে সক্ষম করে। আপনি পিএইচপি এবং অ্যাপাচি আপডেট করতে চাইতে পারেন।

যদি এটি সহায়তা না করে, আপনার একটি পিএইচপি বাগটি রিপোর্ট করা উচিত ।


তবে আমি কীভাবে জানতে পারি এটি কোনটি?
এমজিপিপি

আমার জন্য (ডেবিয়ান স্ট্রেচে) এটি অ্যাপাচি মডিউল ছিল mod-geoip- আমি এখন পরিবর্তে পিএইচপি জিওইপ-এক্সটেনশন ব্যবহার করি
ক্রিস্টোফার কে।

@ এমজিপিপি এটি কোনটি তা খুঁজে বের করার জন্য কেবল সমস্ত অ-অপরিহার্য মডিউলগুলি অক্ষম করুন (যেমনটি সমস্ত বাহ্যিকভাবে বিকাশযুক্তগুলির সাথে শুরু করুন mod-geoip)। সমস্যা কি অবিরত থাকে? তারপরে আরও অক্ষম করুন। আর কোনও সেগফাল্ট দেখতে পাচ্ছেন না? আপনি না করা পর্যন্ত আরও মডিউল সক্ষম করুন। আপনি যদি প্রযুক্তিগতভাবে ঝুঁকে থাকেন এবং কোনও ডিবাগার থাকে তবে @ ম্যাথিয়াস ওডম্যানের দুর্দান্ত উত্তর দেখুন। সচেতন থাকুন যে কোনও ডিবাগার আপনাকে বিভ্রান্ত করতে পারে - কখনও কখনও ক্র্যাশ অন্য মডিউলেও হতে পারে।
ফিহাগ

18

আপনি কি আপনার php.ini এ আউটপুট_বাফারিং বাড়ানোর চেষ্টা করেছেন?

"Zend_mm_heap দূষিত" এর অর্থ কী ?


4
কিছু আপডেটের পরে অ্যাপাচি / পিএইচপি / মাইএসকিএল দিয়ে ডেবিয়ান স্কিজে আমার একই সমস্যা ছিল। আমি এটি সেট করেছি output_buffering = 4096এবং এখন পৃষ্ঠাগুলি আবার কাজ করে। ধন্যবা
rubo77

4
এবং আমার জন্য শুধুমাত্র output_buffering = 8192কাজ করে। অনেক ধন্যবাদ!
ওলেগ

4
এবং এখন, অন্য পৃষ্ঠায়, output_buffering = 8192সেগফোল্টের কারণ, যা সেট করে স্থির করা হয়েছিল output_buffering = Off। আমি অনেক গুলিয়ে গেছি।
ওলেগ

4
এটি বহু বছর পরে, তবে অন্য যে কারওর পক্ষে আমি যেমন এইভাবে হোঁচট খায় ... আমি দেখতে পেয়েছি যে সার্ভারের জন্য আউটপুট বাফারিং বন্ধ করে দেওয়া এবং তারপরে একটি htaccess ফাইল ব্যবহার করে একটি ডিরেক্টরি- বা ফাইল-ভিত্তিক সম্পাদনা করার উপায় ছিল। আউটপুট বাফারিং ব্যবহারকারীকে পোস্ট দেওয়ার আগে কতটা ডেটা রাখতে হবে তা নির্ধারণ করে। ছোট ওয়ান-লাইনারগুলির সাথে এটি সম্ভবত একটি ত্রুটি ঘটায়। বড় ফাইলগুলিতে, আপনি প্রক্রিয়াটি ওভারলোডিং ঝুঁকিপূর্ণ করেন।
পরিত্যক্ত কার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.