Pi-യിൽ VPN ക്ലയന്റ് segfault? ആദ്യം പ്രോസസ് പകർത്തുക
ഷെൽ segmentation fault അച്ചടിക്കുന്നു, കാർഡ് വീണ്ടും എഴുതപ്പെടുന്നു. ഏതെങ്കിലും ഹാർഡ്വെയർ മാറ്റുന്നതിന് മുമ്പ് എക്സിക്യൂട്ടബിൾ, പതിപ്പ്, ക്രാഷ് റെക്കോർഡ് എന്നിവ രേഖപ്പെടുത്തുക.
നിങ്ങൾ ക്ലയന്റ് ആരംഭിക്കുന്നു, ടെർമിനൽ Segmentation fault (core dumped) അച്ചടിക്കുന്നു, അടുത്ത മണിക്കൂർ കാർഡ് വീണ്ടും എഴുതുന്നതിൽ പോകുന്നു. ആ സന്ദേശം ഒരു പ്രോസസ് ഒരു നിമിഷത്തിൽ എങ്ങനെ മരിച്ചു എന്ന് വിവരിക്കുന്നു. അത് ബോർഡ് കേടായി എന്നോ പവർ സപ്ലൈ, സ്റ്റോറേജ്, ഇമേജ് എന്നിവയെ കുറ്റക്കാരല്ല എന്നോ പറയുന്നില്ല.
ഷെൽ അച്ചടിച്ച വരിയിൽ നിന്ന് അതിന് പിന്നിലുള്ള പ്രോസസിലേക്ക് പോകുക. ഉപയോഗപ്രദമായ വസ്തുതകൾ: ഏത് എക്സിക്യൂട്ടബിളാണ് പരാജയപ്പെട്ടത്, ഏത് പരിതസ്ഥിതിയിൽ, കണക്ഷന്റെ ഏത് ഘട്ടത്തിൽ.
ഷെൽ അച്ചടിച്ച വരിയിൽ നിന്ന് തുടങ്ങുക
നിങ്ങളുടെ കമാൻഡിലെ പേര് പലപ്പോഴും മറ്റൊരു ബൈനറി ആരംഭിക്കുന്ന റാപ്പർ അല്ലെങ്കിൽ ലോഞ്ചറാണ്, അതിനാൽ കെർണൽ യഥാർത്ഥത്തിൽ ഏത് എക്സിക്യൂട്ടബിളാണ് അവസാനിപ്പിച്ചതെന്ന് സ്ഥിരീകരിക്കുക. പൂർണ്ണ പാത, പാക്കേജ്, ആപ്ലിക്കേഷൻ പതിപ്പ്, ആർക്കിടെക്ചർ, OS, കെർണൽ റിലീസ്, ഇത് ആരംഭിച്ച അക്കൗണ്ട്, കൃത്യമായ സമയം എന്നിവ എഴുതുക. VPN പേരുള്ള ഷെൽ കമാൻഡ് ഒരു സഹായ പ്രോസസ് എളുപ്പത്തിൽ ആരംഭിക്കാം, റെക്കോർഡ് ആ സഹായിയെ പേരെടുത്ത് പറയും. കഴിഞ്ഞ മാസം ഇൻസ്റ്റാൾ ചെയ്ത പാക്കേജിന്റെ പതിപ്പ് സ്ട്രിംഗ് പകർത്തുന്നത് എന്താണ് പ്രവർത്തിച്ചതെന്ന് ഒന്നും പറയുന്നില്ല.
ക്രാഷിന് തൊട്ടുമുമ്പ് എന്താണ് സംഭവിച്ചതെന്ന് രേഖപ്പെടുത്തുക: സ്റ്റാർട്ടപ്പ്, പ്രൊഫൈൽ പാഴ്സിംഗ്, പ്രാമാണീകരണം, അല്ലെങ്കിൽ ഇതിനകം ട്രാഫിക് കടത്തിവിട്ടിരുന്ന സെഷൻ. ആ നാല് ഘട്ടങ്ങൾ segfault എന്ന വാക്കിനെക്കാൾ ഏറെ തിരച്ചിൽ ചുരുക്കുന്നു. ആ സംഭവത്തിന് ചുറ്റുമുള്ള ചെറിയ ലോഗ് വിൻഡോ സൂക്ഷിക്കുക, ഏത് സമീപകാല മാറ്റമാണ് അതിന് കാരണമായതെന്ന ഊഹങ്ങൾ റെക്കോർഡ് പറയുന്നതുവരെ മാറ്റിവയ്ക്കുക.
മെമ്മറി ഇമേജ് ഉണ്ടോ എന്ന് കണ്ടെത്തുക
core ഫയൽ റഫറൻസ് ഡംപ്പിനെ അവസാനിക്കുമ്പോൾ എഴുതുന്ന പ്രോസസ് മെമ്മറിയുടെ ഇമേജായി വിവരിക്കുന്നു, ആ എഴുത്ത് തടയുന്ന വ്യവസ്ഥകളും പട്ടികപ്പെടുത്തുന്നു. ആ വ്യവസ്ഥകളിൽ പൂജ്യം റിസോഴ്സ് പരിധിയും, ഡംപ്പ് ജോലി ഡയറക്ടറിക്ക് പുറത്തേക്ക് അയയ്ക്കുന്ന core പാറ്റേണും ഉൾപ്പെടുന്നു. അതിനാൽ core എന്ന പേരിലുള്ള ഫയൽ ഇല്ലാതിരിക്കുന്നത് ക്രാഷ് ഉണ്ടായോ ഇല്ലയോ എന്നതിനെക്കുറിച്ച് ഒന്നും തെളിയിക്കുന്നില്ല. സിസ്റ്റം ഒരു തെളിവും ഉണ്ടാക്കിയില്ലെന്ന് തീരുമാനിക്കുന്നതിന് മുമ്പ് കോൺഫിഗർ ചെയ്ത പാറ്റേണും പരിധിയും പരിശോധിക്കുക.
systemd-യുടെ കളക്ടർ ഉപയോഗിക്കുന്ന സിസ്റ്റത്തിൽ, പിന്തുണയ്ക്കുന്ന കാഴ്ച സംഭരിച്ച റെക്കോർഡിനെ ഒരു എക്സിക്യൂട്ടബിളും സമയവുമായി ബന്ധിപ്പിക്കുന്നു. ജേണൽ എൻട്രിയും വായിക്കാവുന്ന മെമ്മറി ഇമേജും രണ്ട് വ്യത്യസ്ത ആർട്ടിഫാക്ടുകളാണ്: നിലനിർത്തൽ നയവും അനുമതികളും ഒന്ന് മറ്റൊന്നില്ലാതെ വിടാം. വിതരണത്തോടോ ആപ്ലിക്കേഷൻ അറ്റകുറ്റപ്പണിക്കാരനോടോ അവർ പിന്തുണയ്ക്കുന്ന ഡയഗ്നോസ്റ്റിക് വർക്ക്ഫ്ലോ ചോദിക്കുക, കാരണം മറ്റൊരു ബിൽഡിൽ നിന്നോ മറ്റൊരു ലൈബ്രറി സെറ്റിൽ നിന്നോ ഉണ്ടാക്കിയ ട്രേസ് സാധാരണയായി അവരുടെ സമയം പാഴാക്കുന്നു.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
യഥാർത്ഥത്തിൽ ക്രാഷ് സംഭവിച്ച മെഷീനിൽ ആ വായനകൾ ആവർത്തിക്കുക. പുതിയ ഇൻസ്റ്റാളിൽ അവ ചെയ്യുന്നത് ആരും ചോദിക്കാത്ത ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു.
ഡംപ്പിനെ രഹസ്യങ്ങൾ വഹിക്കുന്ന വസ്തുവായി കാണുക
പ്രോസസ് മെമ്മറിയിൽ ക്രെഡൻഷ്യലുകൾ, സെഷൻ കീകൾ, പ്രൊഫൈൽ ഉള്ളടക്കം എന്നിവ ഉണ്ടാകാം, ഇത് ഡംപ്പിനെ അടുത്തുള്ള ടെക്സ്റ്റ് ലോഗിനേക്കാൾ സംവേദനക്ഷമമാക്കുന്നു. ലോഗ് തിരുത്തുന്നത് അതാര്യമായ മെമ്മറി ഇമേജിന് ഒന്നും ചെയ്യുന്നില്ല, സാധാരണ issue ട്രാക്കറുകൾ പിന്തുണാ ത്രെഡ് നിലനിൽക്കുന്നതിനേക്കാൾ വളരെ കൂടുതൽ കാലം അറ്റാച്ച്മെന്റുകൾ സൂക്ഷിക്കുന്നു. ഫയൽ വെണ്ടർ അല്ലെങ്കിൽ അറ്റകുറ്റപ്പണിക്കാരൻ നൽകുന്ന സ്വകാര്യ ചാനലിലൂടെ മാറ്റുക. പൊതു issue-യിൽ അസംസ്കൃത ഡംപ്പ് പോസ്റ്റ് ചെയ്യുന്നത് പ്രോസസ് മരിച്ചപ്പോൾ മെമ്മറിയിൽ ഉണ്ടായിരുന്ന എല്ലാം വെളിപ്പെടുത്തുന്നു, ആരെങ്കിലും പരിശോധിക്കുന്നതുവരെ അത് എന്തായിരുന്നുവെന്ന് നിങ്ങൾക്ക് അറിയാൻ കഴിയില്ല.
അറ്റകുറ്റപ്പണിക്കാരൻ ട്രേസ് ആവശ്യപ്പെട്ടാൽ, ഏത് എക്സിക്യൂട്ടബിളിൽ നിന്നും ഏത് ലൈബ്രറികളിൽ നിന്നുമാണ് അവർക്ക് വേണ്ടതെന്ന് ചോദിക്കുക. റിപ്പോർട്ട് ചെയ്ത ബിൽഡുമായി ഫ്രെയിമുകൾ പൊരുത്തപ്പെടാത്ത backtrace വിശ്വസിക്കാൻ പ്രയാസവും തെറ്റായി വായിക്കാൻ എളുപ്പവുമാണ്.
എന്തെങ്കിലും മാറ്റുന്നതിന് മുമ്പ് ഉറവിടം പരിശോധിക്കുക
ഇൻസ്റ്റാളേഷന്റെ ഉടമയിലൂടെ പാക്കേജ് ഉറവിടവും ഫയൽ സമഗ്രതയും പരിശോധിക്കുക, നിയന്ത്രിത അറ്റകുറ്റപ്പണിക്ക് മുമ്പ് കോൺഫിഗറേഷനും ഐഡന്റിറ്റി മെറ്റീരിയലും സംരക്ഷിക്കുക. ഒരു വൃത്തിയുള്ള ഇൻസ്റ്റാൾ ആരംഭിക്കുന്നുണ്ടോ എന്ന് കാണാൻ മാത്രം തെളിവിന്റെ ഏക പകർപ്പ് മുകളിൽ എഴുതരുത്. ബൂട്ട് ചെയ്യുന്ന പുതിയ ഇമേജ് പുതിയ ഇമേജ് ബൂട്ട് ചെയ്യുന്നു എന്ന് പറയുന്നു. പഴയതിൽ കേടായ പാക്കേജ്, പരാജയപ്പെടുന്ന കാർഡ്, ഈ ആർക്കിടെക്ചറിൽ എപ്പോഴും ഫോൾട്ട് ചെയ്യുമായിരുന്ന ബൈനറി എന്നിവ ഉണ്ടായിരുന്നോ എന്ന് പറയുന്നില്ല.
ബന്ധമില്ലാത്ത പ്രോഗ്രാമുകളും പരാജയപ്പെട്ടാൽ, അല്ലെങ്കിൽ സിസ്റ്റം സ്റ്റോറേജ്, പവർ, കെർണൽ പിശകുകൾ ലോഗ് ചെയ്താൽ, ആ നിരീക്ഷണങ്ങൾ പ്ലാറ്റ്ഫോം അന്വേഷണത്തിനായി സൂക്ഷിക്കുക. അവ പരിധി വിപുലീകരിക്കുന്നു; ഓരോ segfault-ഉം പരാജയപ്പെടുന്ന RAM-ൽ നിന്നോ കേടായ ഇമേജിൽ നിന്നോ വരുന്നു എന്ന് തെളിയിക്കുന്നില്ല.
ലക്ഷ്യബോധത്തോടെയുള്ള തിരുത്തലിന് ശേഷം അതേ അംഗീകൃത ലോഞ്ചും അതേ VPN പ്രവർത്തനവും അതേ ഹാർഡ്വെയറിൽ ആവർത്തിക്കുക. ഏത് പരാജയം നിന്നു, ഏത് പതിപ്പിൽ എന്ന് പറയുക. വൃത്തിയുള്ള ബൂട്ട് മാത്രം ഒരു കുറവുള്ള ഘടകത്തെ തിരിച്ചറിയുന്നില്ല, അടുത്ത ഹാർഡ്വെയർ തകരാറും പ്രവചിക്കുന്നില്ല.