রেসকিউ পার্টি

ব্যবহারকারীরা তাদের ফোনের উপর নির্ভরশীল এবং সব সময় একটি চালু ডিভাইস প্রয়োজন। তবে, কখনও কখনও ডিভাইস রিবুট লুপে আটকে যায়, যার ফলে ব্যবহারকারীদের সহায়তা টিকিট জমা দিতে বা ওয়ারেন্টি সংক্রান্ত কোয়েরি করতে হয়। এই প্রসেস ব্যবহারকারীদের জন্য হতাশাজনক এবং ডিভাইস প্রস্তুতকারী ও পরিষেবা প্রদানকারীদের জন্য ব্যয়বহুল।

Android 8.0 (API লেভেল ২৬) এবং তার পরবর্তী ভার্সনে এমন একটি ফিচার আছে যা ক্র্যাশ লুপে আটকে থাকা কোর সিস্টেম কম্পোনেন্ট শনাক্ত করলে রেসকিউ প্রসেস ট্রিগার করে। এই সিগন্যালে, ডিভাইস রিকভার করার জন্য Rescue Party ফিচারটি একাধিক অ্যাকশনের মাধ্যমে এস্কালেট করে। চূড়ান্ত পদক্ষেপ হিসেবে, Rescue Party ডিভাইসটিকে রিকভারি মোডে রিবুট করে এবং ব্যবহারকারীকে ফ্যাক্টরি রিসেট করার জন্য প্রম্পট করে।

প্রয়োগ

রেসকিউ পার্টি ডিফল্ট হিসেবে চালু থাকে এবং এর প্রয়োগ /services/core/java/com/android/server/RescueParty.java-এ থাকে। বুট ও ক্র্যাশ ইভেন্ট সম্পর্কে Rescue Party তথ্য পায় এবং এগুলি শুরু করে:

  • system_server পাঁচ মিনিটে পাঁচ বারের বেশি রিস্টার্ট হয়।
  • ৩০ সেকেন্ডের মধ্যে কোনও সিস্টেম অ্যাপ পাঁচবারের বেশি ক্র্যাশ করলে।

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

Rescue Party-এর জন্য বিশেষ হার্ডওয়্যার সাপোর্ট প্রয়োজন হয় না। প্রয়োগ করা হলে, ডিভাইসের রিকভারি সিস্টেমকে অবশ্যই --prompt_and_wipe_data কমান্ডে সাড়া দিতে হবে এবং ব্যবহারকারীর ডেটা মুছে ফেলার আগে ব্যবহারকারীকে কনফার্ম করার সুযোগ দিতে হবে। এছাড়াও, রিকভারি সিস্টেম ব্যবহারকারীকে তার ডিভাইস আবার বুট করার বিকল্প দিতে হবে।

কারণ, প্রতিটি রেসকিউ লেভেল ডিভাইস আবার অপারেট করার আগে সর্বাধিক পাঁচ মিনিট যোগ করতে পারে তাই ডিভাইস প্রস্তুতকারকদের কাস্টম রেসকিউ লেভেল যোগ করা উচিত নয়। ডিভাইস কাজ না করার সময় বেড়ে গেলে, ব্যবহারকারী নিজের ডিভাইস নিজে ঠিক করার পরিবর্তে সহায়তা বা ওয়ারেন্টি সংক্রান্ত প্রশ্ন করার সম্ভাবনা বেশি থাকে।

যাচাইকরণ

ডিভাইসে অ্যাক্টিভ USB ডেটা কানেকশন থাকলে, রেসকিউ পার্টি সব রেসকিউ ইভেন্টকে দমন করে, কারণ এটি একটি শক্তিশালী ইঙ্গিত যে কেউ ডিভাইসটি ডিবাগ করছেন।

এই সাপ্রেশন ওভাররাইড করতে, এটি রান করুন:

adb shell setprop persist.sys.enable_rescue 1

সেখান থেকে, সিস্টেম বা UI ক্র্যাশ লুপ ট্রিগার করুন:

  • নিম্ন-লেভেলের system_server ক্র্যাশ লুপ ট্রিগার করতে, এগুলি রান করান:

    adb shell setprop debug.crash_system 1
    adb shell stop
    adb shell start
  • মিড-লেভেল SystemUI ক্র্যাশ লুপ ট্রিগার করতে, রান করুন:

    adb shell setprop debug.crash_sysui 1

দুটি ক্র্যাশ লুপই রেসকিউ লজিক শুরু করে। এছাড়াও, Rescue Party সবকটি উদ্ধার অপারেশনের লগ, পারসিস্ট্যান্ট PackageManager লগে সেভ করে। এই লগ /data/system/uiderrors.txt পরে পরীক্ষা ও ডিবাগ করার জন্য সেভ করা হয়। বাগ রিপোর্ট প্যাকেজ সংক্রান্ত সতর্কতামূলক মেসেজ বিভাগের অধীনে এই স্থায়ী লগগুলিও অন্তর্ভুক্ত করে।