چگونه والپیپرها باعث کرش کردن گوشی می‌شوند؟

چگونه

تاکنون بسته ‌به تأثیری که والپیپر روی گوشی می‌گذارد، راهکارهای متعددی برای حل این مشکل ارائه شده‌اند. شماری از کاربران می‌گویند توانسته‌اند در بازه‌ی زمانی کوتاه بین خاموش و روشن شدن صفحه‌ی گوشی، به‌سرعت والپیپر را عوض و مشکل را رفع کنند و تعداد دیگری از کاربران موفق شدند با بهره‌گیری از ابزار ریکاوری TWRP والپیپر را حذف کنند. بااین‌حال، بررسی‌ها نشان می‌دهد در بسیاری از مواقع، تنها راه‌حل این است که گوشی را به‌ تنظیمات کارخانه برگردانید و تمامی داده‌های آن را حذف کنید. با برگرداندن گوشی به ‌تنظیمات کارخانه، داده‌های را از دست می‌دهید که از آن بکاپ نگرفته باشید.

نخستین‌بار یکی از حساب‌های کاربری توییتر با نام Ice Universe به این مشکل عجیب اشاره کرد. Ice Universe یکی از افشاگران نام‌آشنای صنعت فناوری است که تاکنون توانسته اطلاعات زیادی از محصولات معرفی‌نشده‌ی سامسونگ فاش کند. براساس گزارش کاربران، شمار درخورتوجهی از گوشی‌های سامسونگ و گوگل تحت‌تأثیر این مشکل قرار می‌گیرند و اگر والپیپر اعلام‌شده‌ی Ice Universe را روی آن‌ها تنظیم کنید، کرش می‌کنند.

به‌علاوه برخی دیگر از کاربران در توییتر گفته‌اند چندین مدل از گوشی‌های وان‌پلاس و نوکیا و شیائومی نیز دربرابر این باگ آسیب‌پذیر هستند. فعلا مشخص نیست دستگاه‌های تحت‌تأثیر وان‌پلاس و نوکیا و شیائومی از اندروید خام استفاده می‌کرده‌اند یا نسخه‌ی سفارشی اندروید. آن‌طورکه بررسی‌ها نشان می‌دهد، ظاهرا گوشی‌های ساخت هواوی تا ‌این‌ لحظه کمتر از تمامی گوشی‌های دیگر تحت‌تأثیر باگ جدید قرار گرفته‌اند.

مشکل جدید اندروید گوشی‌هایی را تحت‌تأثیر قرار می‌دهد که از نسخه‌ی به‌روز اندروید ۱۰ استفاده می‌کنند. بااین‌حال، از قرار معلوم این باگ مسئله‌ی جدیدی نیست و کاربران چندین سال است مشکلات مشابهی گزارش می‌کنند. برای مثال ماه گذشته، خبرگزاری اندرویدپلیس در گزارشی اعلام کرد گوشی‌های سری پیکسل با مشکلی تقریبا مشابه مواجه شده‌اند. گوشی‌هایی که تحت‌تأثیر آن باگ قرار گرفته بودند، اپلیکیشن Google Wallpapers را روی خود داشتند.

باگ جدید اندروید در نوع خود بسیار عجیب‌و‌غریب است و قطعا ظرفیت زیادی برای همه‌گیرترشدن دارد؛ به‌خصوص اگر ترول‌ها وارد ماجرا شوند. درواقع، این افراد می‌توانند به‌سادگی والپیپر یادشده را برای افراد بی‌خبر از باگ جدید بفرستند و باعث کرش‌کردن گوشی‌های آن شوند. تاکنون، از کاربران مختلف توضیحات متعددی برای دلیل اصلی بروز این اتفاق شنیده‌‌ایم. بسیاری از این افراد به فضای رنگی والپیپر اشاره می‌کنند و می‌گویند این فضای رنگی فراتر از فضای رنگی تحت پشتیبانی رابط کاربری سیستمی اندروید (Android SystemUI) است و همین موضوع باعث کرش‌کردن گوشی‌های هوشمند مبتنی‌بر این سیستم‌عامل می‌شود. 

در پی رسانه‌‌ای‌شدن باگ جدید، خبرگزاری Android Authority برای فهمیدن دلیل اصلی بروز آن با داویده بیانکو، یکی از توسعه‌دهندگان ارشد پروژه‌ی ROM سفارشی Potato Open Sauce Project (موسوم ‌به POSP)، ارتباط برقرار کرد. بیانکو توانسته است فایل به‌روزرسانی جدیدی برای رفع مشکل جدید اندروید بسازد. داویده بیانکو به این موضوع اشاره می‌کند که چگونه تصویری ساده می‌تواند باعث غیرممکن‌شدن امکان استفاده از گوشی‌های اندرویدی شود. داویده بیانکو تأکید می‌کند گفته‌هایی که درادامه می‌آیند، همگی برداشت شخصی او هستند و ممکن است حقیقت نداشته باشند. 

درادامه، توضیحات داویده بیانکو را درباره‌ی این موضوع می‌خوانید:

مشکل اصلی این است که SystemUI اندروید برای بخش والپیپر، تنها می‌تواند تصاویری را نمایش دهد که رنگ‌های آن‌ها در فضای sRGB قرار می‌گیرند و نمی‌تواند ازپس استفاده از والپیپرهای غیر sRGB بربیاید. این موضوع می‌تواند باعث بروز کرشی خاص در دسته‌ی ImageProcessHelper شود. ImageProcessHelper نوعی متغیر است و به‌منظور دسترسی به آرایه‌ای استفاده می‌شود که از محدودیتِ تعیین‌شده برای آرایه‌ها عبور می‌کند. برای جزئیات بیشتر درباره‌ی آرایه‌ها و نحوه‌ی کارکرد ImageProcessHelper می‌توانید اینجا را ببینید. 

متغیر یادشده y نامیده می‌شود و آن را می‌توان مجموع مقادیر rgb پیکسل اسکن‌شده‌ی فعلی به‌حساب آورد. این پیکسل ازطریق اسکن‌کردن تک‌تک ردیف‌ها و ستون‌های سطحِ تصویرِ گری‌اسکیل‌شده‌ (Grayscale) ایجاد شده است. هربار که پیکسلی به‌دست می‌آوریم، مجموع مقادیر rgb آن را به متغیر y نسبت می‌دهیم (بیشترین حد این مقادیر معمولا ۲۵۵ است). پس از این کار از متغیر مذکور به‌منظور دسترسی به یکی از مؤلفه‌های آرایه‌ی بافت‌نگار (هیستوگرام) استفاده می‌کنیم که معمولا اندازه‌اش حداکثر ۲۵۶ است. به‌دنبال این کارها با مؤلفه‌ی یادشده کارهای خاصی انجام می‌دهیم. 

در تصاویر معمولیِ گری‌اسکیل‌شده، مجموع مقادیر rgb همواره ۲۵۵ است؛ اما تصویری که باعث بروز باگ در اندروید شده، تصویری معمولی نیست. در این تصویر، مقدار متغیر y از ۲۵۵ عبور می‌کند. عبور مقدار متغیر y از ۲۵۵ باعث ایجاد نوعی اکسپشن (استثنا) در خارج از محدوده‌ی تعیین‌شده می‌شود. بروز هرگونه اکسپشن در SystemUI اندروید اتفاقی مهلک به‌حساب می‌آید و باعث واردشدن گوشی به چرخه‌ای نامتناهی از کرش‌های پشت‌سر‌هم می‌شود. دلیل کرش‌های پشت‌سر‌هم این است که هرگاه SystemUI آغازبه‌کار کند، روند پردازش تصویر آغاز می‌شود. در‌این‌بین به‌عنوان راه‌حل می‌توان کدی جدید اضافه کرد که بتواند هروقت مقدار متغیر y از ۲۵۵ عبور کرد، آن را به‌صورت خودکار روی ۲۵۵ قرار دهد. این روش جواب می‌دهد؛ اما بنابه‌ برخی دلایل استفاده از آن باعث می‌شود کیفیت تصویر کاهش یابد. 

توسعه‌دهندگان لینیج‌اواس (LineageOS) پیش‌تر توانسته‌اند بفهمند این مشکل خاص به‌دلیل ناکارآمدبودن روش گردکردن در SystemUI رخ می‌دهد. در SystemUI،‌ مقادیر rgb به‌جای اینکه به‌شکل معمولی گرد شوند، همیشه به‌سمت بالا گرد می‌شوند. توسعه‌دهندگان لینیج OS با گردکردن دستی مقادیر موفق شدند مشکل یادشده را رفع کنند، به‌نظر می‌رسد این روش باعث حفظ‌ کیفیت عکس می‌شود؛ اما نمی‌دانم دقیقا چگونه؛ چون به‌نظر می‌رسد SystemUI همیشه تصویر را به sRGB تبدیل می‌کند. بدین‌ترتیب، اگر فضای رنگی اولیه‌ی عکس گسترده‌تر باشد، پس از اتکا به این روش‌ رنگ‌های کمتری در تصویر به‌نمایش درمی‌آیند. 

همچنین یکی از توسعه‌دهندگان وب‌سایت 9to5Google متوجه شد مشکل مذکور در سیستم‌عامل اندروید ۱۱ رخ نمی‌دهد؛ زیرا اندروید ۱۱ پیش از پردازش تصاویر به‌هر نحو، آن‌ها را به sRGB تبدیل می‌کند. همچنین، تلاش کردم خودم تصویری مشکل‌دار ازطریق فتوشاپ یا گیمپ بسازم؛ اما SystemUI همیشه به‌صورت خودکار تصویر را به‌گونه‌ای تغییر داد که رنگ‌های آن در فضای رنگی ارائه‌شده‌ی سیستم قرار گیرد؛ اتفاقی که باعث بروز هیچ‌گونه کرشی نشد؛ اما طبیعتا بخشی از رنگ‌های تصویر از دست رفت. حتی تلاش کردم پروفایل رنگی تصویر مشکل‌دار را استخراج کنم و به استفاده از آن در تصویری جدید روی بیاورم؛ اما همچنان نتوانستم باعث کرش‌کردن SystemUI شوم.

خبر ناراحت‌کننده این است که والپیپر یادشده در این مقاله که باعث کرش‌کردن گوشی‌های اندرویدی می‌شود، به‌شکل بسیار وسیعی در فضای وب پخش شده است و شکی نداریم برخی افراد ازطریق آن دوستانشان را اذیت خواهند کرد. نکته‌ی نگران‌کننده‌تر این است که به‌نظر می‌رسد این باگ یا حتی باگ‌های مشابه آن چند سال است در اندروید مشاهده می‌شوند و در این سال‌ها، شاهد اقدامی عمومی گوگل نبوده‌ایم و احتمال دارد این شرکت در پشت‌پرده کارهایی انجام داده باشد.

اگر قربانی این باگ شوید، راه‌حل ساده و سریعی برای خلاص‌شدن از آن ندارید. درحال‌حاضر، بازگشت به تنظیمات کارخانه آخرین گزینه‌ای است که مطرح می‌شود؛ اما پیشنهاد می‌کنیم اگر با این مشکل مواجه شده‌اید، اندکی صبر کنید تا شاید راه‌حلی بهتر پیدا شود؛ راه‌حلی که با استفاده از آن بتوانید بدون از‌دست‌رفتن داده‌های گوشی مشکل را رفع کنید. بااین‌حال، همواره باید نیمه‌ی پر لیوان را دید. آن‌طورکه به‌نظر می‌رسد، باگ جدید بسیار ساده است و در دسته‌ی بدافزارها قرار نمی‌گیرد. البته همان‌طورکه در جمله‌ی قبل خواندید، «به‌نظر می‌رسد» این باگ ساده است. فعلا تا زمانی‌که گوگل رسما واکنش نشان ندهد، هیچ‌چیز مشخص نیست. خبر خوشحال‌کننده‌ این است که باگ مذکور اندروید ۱۱ را متأثر نمی‌کند که در آینده‌ای نزدیک از راه می‌رسد.
 

دیدگاه ها (0)

دیدگاه خود را بیان کنید