VnReview
Hà Nội

Làm thế nào ảnh nền có thể khiến smartphone bị tê liệt?

Bằng cách nào mà một hình ảnh đơn giản có thể làm một chiếc điện thoại Android bị crash đến mức không thể sử dụng được nữa?

Bằng cách nào mà một ảnh nền có thể khiến những chiếc điện thoại bị crash?

Chính xác, đây là câu hỏi được đề cập rất nhiều trong 24 giờ qua, do một "hình nền bị nguyền rủa" đang được lan truyền trên nhiều trang web lớn nhỏ khác nhau.

Mô tả vấn đề

Tóm tắt vụ việc: Khi thiết lập một bức ảnh làm hình nền, một số chiếc điện thoại có thể bị một vòng lặp crash, khiến chúng không thể sử dụng được nữa .

Có một vài phương án để giải quyết tình huống này, tùy thuộc vào mức độ khó của mỗi chiếc điện thoại. Một số người dùng đã có thể thay đổi hình nền trong mỗi một khoảng ngắn bị crash. Số khác đã loại bỏ hình nền này thành công thông qua công cụ recovery TWRP. Nhưng trong hầu hết mọi trường hợp, cách giải quyết duy nhất đó chính là thiết lập điện thoại lại cài đặt gốc. Điều này sẽ khiến tất cả dữ liệu trên máy đều bị mất.

Vấn đề này được công bố bởi Ice Universe – một người dùng Twitter đến từ Trung Quốc, chuyên đăng tải nhiều rò rỉ khác nhau. Dựa trên báo cáo của người dùng, số lượng thiết bị bị ảnh hưởng nhiều đến từ Samsung và Google, trong khi cũng có một số là của OnePlus, Nokia và Xiaomi (không rõ là những thiết bị này đang chạy phần mềm gốc hay các bản ROM tùy biến). Theo thử nghiệm của Android Authority, những thiết bị Huawei dường như lại không gặp vấn đề về hình nền này.

Bằng cách nào mà một ảnh nền có thể khiến những chiếc điện thoại bị crash?

Vấn đề này ảnh hưởng đến những chiếc điện thoại đã được cập nhật lên Android 10, nhưng hóa ra, nó không thực sự mới. Nhiều người dùng đã từng báo cáo các vấn đề tương tự trong nhiều năm qua, và mới chỉ tháng trước, Android Police đã tiết lộ một vấn đề đặc biệt ảnh hưởng đến những chiếc điện thoại Pixel đang chạy ứng dụng Google Wallpaper.

Chuyện gì đang xảy ra vậy?

Android Authority nhận thấy có một vài lý do để lý giải cho vấn đề này. Họ cho hay rằng, vấn đề này chủ yếu liên quan đến không gian màu của bức hình, tức nó vượt ra khỏi mức mà SystemUI của Android có thể xử lý, dẫn đến crash.

Để hiểu rõ hơn về những gì đang xảy ra với sự cố crash hình nền Android này, Android Authority đã liên hệ với Davide Bianco – một trong những nhà phát triển chính của dự án ROM tùy biến POSP, đồng thời cũng là người đã gửi bán vá đầu tiên về lỗi này đến trình theo dõi lỗi AOSP.

Davide giải thích:

"Vấn đề quan trọng ở đây đó chính là SystemUI chỉ có thể xử lý những hình ảnh sRGB cho hình nền và không có bất kỳ kiểm tra nào đối với các hình nền không phải sRGB. Điều này có thể dẫn đến một sự cố cụ thể trong class ImageProcessHelper, bởi một biến được sử dụng để truy cập một mảng nhưng lại vượt qua giới hạn mảng.

Cụ thể hơn, bạn có thể tham khảo method definition của class này tại đây.

Biến này được gọi là y và nó sẽ cộng các giá trị rgb pixel đã được quét hiện tại. Để có được pixel này, hệ thống sẽ quét mọi hàng và cột của bề mặt hình ảnh dựa trên thang độ xám. Mỗi khi nhận được một pixel, chúng ta sẽ gán y là tổng giá trị rgb của nó (thường tối đa là 255) và sử dụng biến đó để truy cập vào một phần tử trong mảng histogram (có kích thước tối đa là 256), sau đó sẽ thao tác với những phần tử đó.

Đối với những hình ảnh có thang độ xám bình thường, tổng giá trị rgb luôn luôn là 255, nhưng đây không phải là một hình ảnh bình thường. Biến y đã vượt qua 255 và vượt quá 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 crash vô hạn bởi hình ảnh cần phải được xử lý mỗi khi SysUI khởi chạy). Một giải pháp để giải quyết điều này là thêm một đợt kiểm tra sau khi biến y được gán một giá trị, về cơ bản sẽ đặt y thành 255 nếu nó vượt quá giới hạn tối đa. Điều này thực sự sẽ giải quyết vấn đề, nhưng lại mang đến chất lượng kém hơn vì một số lý do.

Các anh chàng LineagOS đã phát hiện ra rằng vấn đề này xuất phát từ việc làm tròn kém, chủ yếu là do những giá trị rgb luôn được làm tròn đến ceil thay vì làm tròng như thông thường. Họ có thể khắc phục bằng cách làm tròn các giá trị một cách thủ công và sẽ đảm bảo được chất lượng. Dẫy vậy, tôi thực sự chưa hiểu lắm, bởi hầu hết nguyên do là bởi SysUI luôn chuyển hình ảnh sang sRGB, khiến màu sắc bị mất đi khi không gian màu của chúng lớn hơn.

Lập trình viên Android Dylan Roussel tại 9to5Google cũng phát hiện rằng vấn đề này không xảy ra trên Android 11, do hình ảnh luôn được chuyển sang sRGB trước khi được xử lý.

Tôi cũng thả thử tạo một hình ảnh của riêng mình bằng photoshop hoặc gimp, nhưng SysUI luôn chuyển hình ảnh sang một không gian màu an toàn, thế nên, việc crash không xảy ra. Tôi cũng thử trích xuất profile màu của hình ảnh trên và sử dụng chúng trong một hình ảnh mới nhưng vẫn không thể khiến SysUI crash."

Một vài tin tốt và tin xấu

Bằng cách nào mà một ảnh nền có thể khiến những chiếc điện thoại bị crash?

Tin xấu là vấn đề này hiện đang được công khai và nhiều người có thể sử dụng bức ảnh này để đi trêu chọ những người khác. Tồi tệ hơn, Google chẳng có một động thái rõ ràng nào trong việc khắc phục vấn đề này.

Một tin xấu khác, nếu trở thành nạn nhân của trò đùa này, thì bạn không có bất cứ cách đơn giản nào để giải quyết. Khôi phục cài đặt gốc vẫn là giải pháp toàn diện nhất, nhưng dĩ nhiên, chúng tôi không khuyến khích bạn tự thử nó trên thiết bị của mình.

Dẫu vậy, tin tốt là dường như lỗi này khá đơn giản, ít nhất là so với malware hay bất cứ thứ gì độc hại. "Dường như" là bởi Google chưa đưa ra bất cứ xác nhận nào. Và một tin tốt nữa, lỗi này sẽ không diễn ra khi Android 11 cập bến trong cuối năm nay.

Minh Hùng;theo Android Authority

Chủ đề khác