Դուք գործարկում եք հաճախորդը, տերմինալը տպում է Segmentation fault (core dumped), և հաջորդ ժամը գնում է քարտի վերագրությանը։ Այդ հաղորդագրությունը նկարագրում է, թե ինչպես մի գործընթաց մահացավ մի պահի։ Այն չի ասում, որ տախտակը վնասված է, և չի արդարացնում նաև սնուցումը, պահոցը կամ պատկերը։

Աշխատեք shell-ի տպած տողից դեպի դրա հետևում գտնվող գործընթացը։ Օգտակար փաստերն են՝ ո՛ր կատարվող ֆայլը ձախողվեց, ինչ միջավայրում և միացման ո՛ր փուլում։

Սկսեք shell-ի տպած տողից

Ձեր հրամանի անունը հաճախ փաթաթան կամ գործարկիչ է, որը սկսում է այլ բինար ֆայլ, ուստի հաստատեք, թե kernel-ը իրականում ո՛ր կատարվող ֆայլը դադարեցրեց։ Գրի առեք ամբողջ ուղին, փաթեթի և հավելվածի տարբերակը, ճարտարապետությունը, ՕՀ-ի և kernel-ի թողարկումը, այն հաշիվը, որը գործարկեց այն, և ճշգրիտ ժամը։ VPN-ի անունը կրող shell-ի հրամանը հեշտությամբ կարող է գործարկել օժանդակ գործընթաց, և արձանագրությունը կնշի հենց այդ օժանդակը։ Անցյալ ամիս տեղադրված փաթեթի տարբերակի տողը պատճենելը ոչինչ չի ասում այն մասին, թե ինչ է աշխատել։

Նշեք, թե ինչն անմիջապես նախորդեց խափանմանը՝ գործարկումը, պրոֆիլի վերլուծությունը, նույնականացումը կամ այն սեսիան, որն արդեն երթևեկություն էր անցկացնում։ Այդ չորս փուլերը շատ ավելի են նեղացնում որոնումը, քան segfault բառը։ Պահպանեք այդ իրադարձության շուրջ կարճ մատյանային պատուհանը և մի կողմ թողեք ենթադրությունները, թե որ վերջին փոփոխությունն է դա առաջացրել, մինչև արձանագրությունը դա ասի։

Պարզեք՝ արդյոք հիշողության պատկեր գոյություն ունի

core ֆայլի տեղեկանքը dump-ը նկարագրում է որպես գործընթացի հիշողության պատկեր, որը գրվում է ավարտի պահին, և նաև թվարկում է այն պայմանները, որոնք խոչընդոտում են այդ գրառումը։ Այդ պայմանները ներառում են զրոյական ռեսուրսային սահմանափակում և core օրինաչափություն, որը dump-ը ուղղում է աշխատանքային պանակից դուրս։ Ուստի core անունով ֆայլի բացակայությունը ոչինչ չի ապացուցում այն մասին, թե արդյոք խափանում եղել է։ Ստուգեք կարգավորված օրինաչափությունը և սահմանը նախքան եզրակացնելը, որ համակարգը ապացույց չի ստեղծել։

systemd-ի հավաքիչն օգտագործող համակարգում աջակցվող տեսքը կապում է պահված արձանագրությունը կատարվող ֆայլի և ժամանակի հետ։ Մատյանի գրառումը և ընթեռնելի հիշողության պատկերը երկու տարբեր արտեֆակտ են. պահպանման քաղաքականությունը և թույլտվությունները կարող են ձեզ թողնել մեկը առանց մյուսի։ Հարցրեք տարածողին կամ հավելվածի պահպանողին իրենց աջակցվող ախտորոշիչ աշխատահոսքի մասին, որովհետև այլ build-ից կամ այլ գրադարանային հավաքածուից ստացված trace-ը սովորաբար վատնում է նրանց ժամանակը։

sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn

Կրկնեք այդ ընթերցումները այն մեքենայի վրա, որն իսկապես խափանվել է։ Նոր տեղադրման վրա դրանք անելը պատասխանում է մի հարցի, որը ոչ ոք չի տվել։

Վերաբերվեք dump-ին որպես գաղտնիքներ կրող նյութի

Գործընթացի հիշողությունը կարող է պարունակել վկայագրեր, սեսիայի բանալիներ և պրոֆիլի բովանդակություն, ինչը dump-ը դարձնում է ավելի զգայուն, քան կողքի տեքստային մատյանը։ Մատյանի խմբագրումը ոչինչ չի անում անթափանց հիշողության պատկերի համար, և սովորական issue-թրեքերները կցորդները պահում են շատ ավելի երկար, քան տևում է աջակցության թեման։ Տեղափոխեք ֆայլը մատակարարի կամ պահպանողի տրամադրած մասնավոր ալիքով։ Հրապարակային issue-ում հում dump տեղադրելը բացահայտում է այն ամենը, ինչ եղել է հիշողության մեջ գործընթացի մահվան պահին, և դուք չեք կարող իմանալ՝ ինչ էր դա, մինչև ինչ-որ մեկը չուսումնասիրի։

Եթե պահպանողը trace է խնդրում, հարցրեք՝ ո՛ր կատարվող ֆայլից և ո՛ր գրադարաններից է ուզում։ Backtrace-ը, որի շրջանակները չեն համապատասխանում հաղորդված build-ին, դժվար է վստահել և հեշտ՝ սխալ կարդալ։

Ստուգեք ծագումը նախքան ինչ-որ բան փոխարինելը

Ստուգեք փաթեթի ծագումը և ֆայլի ամբողջականությունը տեղադրման տիրոջ միջոցով, և ցանկացած վերահսկվող վերանորոգումից առաջ պահպանեք կոնֆիգուրացիան և ինքնության նյութերը։ Մի՛ վերագրեք ապացույցի միակ օրինակը միայն տեսնելու համար՝ արդյոք մաքուր տեղադրումը սկսվում է։ Նոր պատկերը, որը բեռնվում է, ասում է, որ նոր պատկերը բեռնվում է։ Այն չի ասում՝ արդյոք հինը պարունակում էր վնասված փաթեթ, խափանվող քարտ կամ բինար, որը միշտ խափանվելու էր այս ճարտարապետության վրա։

Եթե անկապ ծրագրեր նույնպես ձախողվում են, կամ համակարգը գրանցում է պահոցի, սնուցման կամ kernel-ի սխալներ, պահեք այդ դիտարկումները հարթակի քննության համար։ Դրանք լայնացնում են շրջանակը. չեն ապացուցում, որ ամեն segfault գալիս է խափանվող RAM-ից կամ վնասված պատկերից։

Նպատակային ուղղումից հետո կրկնեք նույն լիազորված գործարկումը և նույն VPN գործողությունը նույն սարքավորման վրա։ Ասեք՝ ո՛ր ձախողումը դադարեց և ո՛ր տարբերակում։ Մաքուր բեռնումն ինքնին ոչ՛ հայտնաբերում է թերի բաղադրիչ, ոչ՛ կանխատեսում հաջորդ սարքային խափանումը։

Առնչվող հոդվածներ