Tất cả điện thoại Android sẽ biến thành cục gạch khi bạn đặt hình nền này

Làm thế nào mà một hình nền tưởng chừng như vô hại lại có thể khiến hệ điều hành Android gặp lỗi? Đó là câu hỏi mà nhiều người đặt ra khi tấm “ảnh nền chết chóc” được chia sẻ trên mạng.

Sáng nay dân mạng nháo nhào về một bức ảnh được phát tán trên Twitter của Ice Universe, khi bạn lưu bức ảnh này vào điện thoại chạy Android, đặc biệt là điện thoại Samsung, sẽ ngay lập tức bị crash và điện thoại của bạn sẽ biến thành cục gạch.

Theo một báo cáo mới đây, bức ảnh phong cảnh dưới hình (đã được qua chỉnh sửa để không gây hại) trông rất bình thường, được chụp bằng máy ảnh Nikon D850, có file dung lượng 4,67MB. Một số người dùng smartphone đã đặt bức ảnh này làm hình nền, và gặp phải sự cố nghiêm trọng. Điện thoại ngay lập tức bị crash với UI hệ thống và liên tục khởi động lại.

Dựa trên các chia sẻ của người dùng, nhiều mẫu máy của Samsung và Google bị ảnh hưởng, một số thiết bị OnePlus, Nokia và Xiaomi cũng bị (không rõ liệu các thiết bị này chạy ROM chính thức hay ROM tùy chỉnh). Theo AndroidAuthority, các thiết bị Huawei dường như ít gặp sự cố với hình nền này hơn.

Vấn đề ảnh hưởng đến các điện thoại chạy Android 10, nhưng hóa ra, nó không thực sự mới. Người dùng đã từng chia sẻ vấn đề tương tự trong một vài năm qua.

Điều này có khả năng trở thành một vấn đề rộng hơn nếu nhiều người chia sẻ tấm ảnh nền mà không thông báo nguy cơ khi cài đăt.

Vậy, nguyên nhân là gì?

Đầu tiên cần phải nói rằng hình ảnh này không hề chứa mã độc như nhiều người lầm tưởng. Hầu hết những người có hiểu biết về Android đều đồng ý rằng nguyên nhân là do không gian màu (color space) của hình ảnh này đã vượt xa những gì SystemUI của Android có thể xử lý và gây ra sự cố.

Davide Bianco, một nhà phát triển Android, người dẫn đầu dự án ROM custom POSP và thường xuyên theo dõi lỗi của AOSP (Dự án mã nguồn mở Android), đã giải thích vấn đề như sau (bạn có thể đọc bản tiếng Anh tại đây):

Vấn đề chính ở đây là SystemUI chỉ xử lý ảnh sRGB cho hình nền và không thể xử lý ảnh không phải sRGB. Điều này có thể dẫn đến một sự cố cụ thể trong ImageProcessHelper, vì một biến được sử dụng để truy cập một chuỗi sẽ không thể truy cập được. Bạn có thể xem phương pháp tại đây.

Biến này được gọi là y và nó là tổng các giá trị pixel RBG pixel được quét. Pixel này thu được từ việc quét mọi hàng ngang và dọc của bề mặt hình ảnh trên thang độ xám. Các nhà phát triển Android gán cho y tổng giá trị rgb của nó (thường là tối đa là 255) và sử dụng biến đã nói để truy cập vào biểu đồ chuỗi (có kích thước là tối đa 256) và thực hiện các nhiệm vụ.

Đối với các hình ảnh bình thường, tổng giá trị rgb luôn là 255, nhưng đây không phải là hình ảnh bình thường. Biến y vượt quá 255 và nó tạo ra ngoại lệ giới hạn (bất kỳ ngoại lệ nào trong SysUI đều được coi là nghiêm trọng, dẫn đến một vòng lặp vô hạn của các sự cố vì hình ảnh được xử lý mỗi khi SysUI khởi động).

Ngoài ra, theo 9to5Google, sự cố này không xảy ra trên Android 11 vì hệ điều hành này sẽ tự chuyển hình ảnh thành sRGB trước khi xử lý. Tất nhiên, không nhất thiết phải đúng bức ảnh này mà bất kỳ bức ảnh nào thoả điều kiện cũng có thể khiến sự cố tương tự xảy ra.

Nếu bạn quyết định bỏ qua cảnh báo và thử cài bức ảnh này (link ở đây), bạn có thể phải khôi phục thiết bị về cài đặt gốc vào safe mode và xoá file ảnh từ đó.

Cho đến lúc này thì Google vẫn chưa chính thức đưa ra phản hồi nào.

Có thể bạn cũng thích