আমি এইভাবে বিক্ষিপ্ত কার্নেল প্যানিক্স পাচ্ছি:
*** Panic Report ***
panic(cpu 3 caller 0xffffff80189d435f): assertion failed: ifp->if_sndbyte_total >= len, file: /Library/Caches/com.apple.xbs/Sources/xnu/xnu-3789.70.16/bsd/netinet/in_pcb.c, line: 3458
[…]
Mac OS version:
16G29
Kernel version:
Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64
Kernel UUID: [REDACTED]
Kernel slide: 0x0000000018200000
Kernel text base: 0xffffff8018400000
__HIB text base: 0xffffff8018300000
System model name: MacBookPro12,1 (Mac-[REDACTED])
System uptime in nanoseconds: 205886295907546
last loaded kext at 205508810738561: com.apple.driver.usb.cdc 5.0.0 (addr 0xffffff7f9b612000, size 28672)
last unloaded kext at 196312576713453: com.apple.driver.usb.AppleUSBHostCompositeDevice 1.1 (addr 0xffffff7f9b60b000, size 28672)
[…]
( এই টুকরোটিতে বাকী লগটি সন্ধান করুন )
আমি কার্নেল প্যানিকস ডিবাগ করার বিষয়ে অ্যাপল টেক নোটের মাধ্যমে পড়েছি , তবে কীভাবে এটি এই আতঙ্কে প্রয়োগ করা যায় তা খুঁজে পেলাম না, কার্নেল ডিবাগ কিট ডাউনলোড করার লিংকটি নষ্ট হয়ে গেছে, তাই আমি কক্সেটের ম্যাপিংটি পরিচালনা করতে পারি নি কার্নেলের স্মৃতিতে - আমি চারপাশে কী বোঝাচ্ছিলাম তা জানি না 0xffffff80189d435f
।
আমি উত্স কোডটিও পড়েছি , যা "প্রোটোকল নিয়ন্ত্রণ ব্লকগুলি পরিচালনা করে [গুলি]", অর্থাৎ টিসিপি সকেটের সমস্ত স্টেটকিপিং। প্রশ্নে ফাংশনটি হ'ল:
inline void
inp_incr_sndbytes_unsent(struct socket *so, int32_t len)
{
struct inpcb *inp = (struct inpcb *)so->so_pcb;
struct ifnet *ifp = inp->inp_last_outifp;
if (ifp != NULL) {
VERIFY(ifp->if_sndbyte_unsent >= 0);
OSAddAtomic64(len, &ifp->if_sndbyte_unsent);
}
}
যা আমাকে পরামর্শ দেয় যে সমস্যাটি নেটওয়ার্ক স্ট্যাকের মধ্যে রয়েছে এবং বাফারগুলি ধরে রাখার ক্ষেত্রে তার কিছু করার থাকতে পারে তবে নিয়ন্ত্রণ প্রবাহটি বোঝার জন্য আমি কোনও বিএসডি বা টিসিপি বিশেষজ্ঞের পক্ষে পর্যাপ্ত নই।
এটিকে আরও ডিবাগ করার সর্বোত্তম উপায় হিসাবে আমি একটি ক্ষতির মুখোমুখি হয়েছি - আমার হান হ'ল এটি ভিপিএন ক্লায়েন্টের সাথে করা উচিত (পালস সিকিউর, পূর্ববর্তী জুনোস), তবে আমি নির্ভরযোগ্যভাবে ক্র্যাশটি ট্রিগার করতে পারি না, এটি কেবল সময়ের সাথে ঘটে ( এবং যখন আমি এটি পর্যবেক্ষণ করছিলাম, এটি কেবল ভিপিএন-তে থাকাকালীন ঘটেছিল, তবে এন = 2)। আমার কাজটি করতে সক্ষম হতে আমার ভাইরাস স্ক্যানার এবং পালস সিকিওর উভয়েরই দরকার।
আপডেট করুন ক্রাশটি সবে মাত্র 6 ঘন্টা আপটাইম পরে আবার ঘটেছিল যার বেশিরভাগটি অলস অবস্থায় কাটানো হয়েছিল। গতকাল রান ডায়াগনস্টিকস, সমস্ত ঠিক আছে, সকালে কম্পিউটার বুট করা হয়েছে, প্রাতঃরাশের জন্য ঘুমাতে রেখে এয়ারপোর্টে চড়ে আবার খুলেছে এবং এটি কয়েক (<2) মিনিটের পরে ক্র্যাশ হয়ে গেছে। ঘুম থেকে ওঠার সময় আমি ভিপিএন-তে ছিলাম। এছাড়াও, এটি একটি "পরিষ্কার" ক্র্যাশ হওয়ার কারণে, সর্বশেষ লোড হওয়া কেক্সটগুলি হ'ল:
last loaded kext at 1743857437016: com.apple.driver.usb.cdc 5.0.0 (addr 0xffffff7f94191000, size 28672)
last unloaded kext at 898332773796: com.apple.driver.AppleIntelLpssI2C 3.0.60 (addr 0xffffff7f93853000, size 40960)
যেহেতু আমি সর্বশেষ কোল্ড বুট করার পরে কোনও ইউএসবি ডিভাইস সংযুক্ত ছিলাম না, আবার আমাকে পরামর্শ দিয়েছিলাম যে এটি কোনও হার্ডওয়্যার বা ইউএসবি সমস্যা নয়, তবে ভিপিএন এবং / অথবা কার্নেল-সাইড টিসিপি স্ট্যাক সহ একটি।
kernel_task
। আমি কয়েকমাস ক্রোম ব্যবহার না করে চলে গেলে ক্রাশগুলিও ঘটেছিল।