Một lỗi tồn tại hơn 20 năm trong Firefox được một coder 23 tuổi sửa chữa như thế nào

Có thể không phải ai cũng tạo ra được một commit tuyệt vời, nhưng một commit tuyệt vời có thể đến từ bất kỳ ai.

Trở lại tháng 6 năm 2002, khi xuất hiện vụ kiện chống độc quyền giữa Bộ Tư pháp Mỹ đối với Microsoft, Mark Shuttleworth, nhà sáng lập Ubuntu cùng Adam Price bắt đầu gặp một lỗi kỳ lạ trên trình duyệt Mozilla (tên ban đầu của Firefox) trên máy Mac mà họ đang sử dụng.

Nếu tôi di chuột qua một đường link trên thanh công cụ, và đợi một giây ở đó, một hộp vàng nhỏ với phần mô tả đường link sẽ hiện ra. Nếu tôi sử dụng tổ hợp nút Command – Tab để đưa Firefox vào chạy nền, hộp nhỏ màu vàng đó vẫn sẽ ở đó ngay trên màn hình. Cách duy nhất để loại bỏ điều này là mở lại Firefox lên và di chuột ra khỏi thanh công cụ.” Price cho biết về lỗi này.

Lỗi công cụ chú giải của Firefox trên MacOS không biến mất sau khi dùng phím tắt để chuyển đổi cửa sổ đã tồn tại trong hơn 20 năm mà không được ai sửa
Lỗi công cụ chú giải của Firefox trên MacOS không biến mất sau khi dùng phím tắt để chuyển đổi cửa sổ đã tồn tại trong hơn 20 năm mà không được ai sửa

Ngoài ra còn một số lỗi khác liên quan đến vấn đề này, nhưng cuối cùng Price cũng tái tạo được vấn đề đó. Không những thế, vấn đề này còn được xác nhận bởi nhiều người khác cũng gặp phải trong những tuần sau đó, và rồi những tháng, những năm sau đó – cuối cùng vấn đề liên quan đến công cụ chú giải (tooltip) này tồn tại suốt hơn 20 năm sau đó mà không được sửa chữa. Được phát hiện từ năm 2002, lỗi này còn có tuổi đời lâu hơn chính trình duyệt Firefox (vốn mang cái tên này từ năm 2004).

Qua nhiều năm sau, mọi người vẫn nói về các lỗi liên quan đến vấn đề này trên một số diễn đàn khác nhau. Đôi khi nó cũng được sửa lại, nhưng sau đó các lập trình viên và người dùng nhận ra rằng nó chỉ khác một chút so với những phiên bản trước hoặc vì một lý do ngẫu nhiên nào đó, nó không hiện ra. Đôi khi nó còn xuất hiện cả trong Windows và Linux, nhưng dù sao đi nữa, vấn đề này chưa bao giờ được sửa chữa hoàn toàn trong hơn 20 năm qua – một di tích của quá khứ.

Nhưng từ phiên bản sửa lỗi Bug 148624 được phát hành vào đầu tháng Chín vừa qua, di tích này đã không còn nữa. Bản vá này cũng rất nhỏ gọn khi bổ sung một công cụ kiểm tra xem liệu có tài liệu nào đang xuất hiện cạnh dòng code hiển thị công cụ chú giải không.

Người đưa lên commit sửa lỗi này cho Firefox là một coder chỉ mới 24 tuổi, tuổi đời chỉ nhỉnh hơn một chút so với thời gian tồn tại của lỗi này
Người đưa lên commit sửa lỗi này cho Firefox là một coder chỉ mới 24 tuổi, tuổi đời chỉ nhỉnh hơn một chút so với thời gian tồn tại của lỗi này

Điều thú vị là Yifan Zhu, coder viết nên bản vá cho vấn đề kéo dài hơn 20 năm này của Firefox, cũng mới chỉ 24 tuổi. Trong email của mình gửi tới Arstechnica, lập trình viên sinh năm 1999 cho biết, lần đầu tiên họ gặp phải lỗi này là với Thunderbird trong Linux khi “các đoạn văn bản ngẫu nhiên dường như trôi nổi trên màn hình của tôi.” Việc chuyển đổi thường xuyên giữa các desktop ảo với các dòng văn bản này liên tục xuất hiện trên màn hình khiến nó trở thành vấn đề “cực kỳ khó chịu.” Zhu sau đó cũng biết được cách mở lại Firefox hoặc Thunderbird và di chuyển con trỏ chuột để tắt nó đi.

Tuy nhiên, nó ngày càng phiền toái hơn và vì vậy họ nghiên cứu và tìm cách đệ trình lỗi này lên. Nhưng rồi “tôi kinh hoàng nhận ra rằng báo cáo về lỗi này đã xuất hiện hơn 20 năm nay và nó vẫn chưa được sửa.” Có lẽ bởi vì đó “chỉ là một vấn đề nhỏ về “mỹ thuật” mà không làm crash ứng dụng” nên chẳng ai muốn sửa nó cả - “Trừ khi tôi tự làm nó.” Zhu cho biết trong email.

Không chỉ vậy, Zhu và bạn của mình cũng cho rằng, không chỉ là một vấn đề nhỏ về mỹ thuật, lỗi này cũng rất khó tái tạo lại, do vậy, nó không dành được mức độ ưu tiên từ các lập trình viên như nhlỗi nghiêm trọng khác.

Động lực đã có và cũng có kiến thức về lập trình, nhưng Zhu lại “hoàn toàn không có kinh nghiệm về các dự án phức tạp như trình duyệt Firefox” và “chưa bao giờ đóng góp vào các dự án mã nguồn mở trước đây”. Mặc dù vậy, anh có một kỳ nghỉ hè phía trước vậy tại sao lại không chứ?

Khởi đầu của họ không hề suôn sẻ. Zhu cho biết: “Tôi tìm kiếm từ khóa “tooltip” trong toàn bộ code base (code cơ sở), kiểm tra nội dung để tìm các khả năng có thể và chèn các câu lệnh gỡ lỗi vào để theo dõi quá trình thực thi.” Cuối cùng câu trả lời cũng hiện ra.

Khi trỏ chuột được di qua một số phần tử, một trình hẹn giờ (timer) sẽ bắt đầu hiển thị công cụ chú giải. Đáng nhẽ timer này phải được hủy bỏ khi chuột di chuyển ra khỏi các phần tử đó, nhưng điều này lại không xảy ra trong Firefox khi tôi sử dụng phím tắt để chuyển đổi cửa sổ hoặc các desktop ảo.”

Lời tán thưởng của một người dùng trên mạng xã hội Mastodon đối với bản sửa lỗi này trên Firefox 
Lời tán thưởng của một người dùng trên mạng xã hội Mastodon đối với bản sửa lỗi này trên Firefox 

Từ đó, Zhu đẩy lên một commit để hiển thị công cụ chú giải này dựa trên việc sự kiện focus có diễn ra trong Firefox hay không, thay vì phụ thuộc vào việc con trỏ chuột có dịch chuyển ra khỏi ứng dụng hay không. Vài giờ sau đó, họ nhận được thông tin từ Emilio Cobos Álvarez, người đánh giá commit của Zhu và đưa nó vào code base của Firefox. Cho đến nay bản sửa lỗi này về cơ bản đã loại bỏ hầu hết các khả năng xuất hiện của nó, tuy nhiên đôi lúc nó vẫn xuất hiện trong một số trường hợp cụ thể.

Cobos Álvarez, người đưa phần sửa lỗi của Zhu vào trong commit, cho biết “điều này không hề dễ dàng” do các cấu hình khác nhau của Firefox cũng như cách chúng phản hồi với các hệ điều hành khác nhau. Việc tìm ra được giải pháp giải quyết hoàn toàn vấn đề này trong khi thiếu các dữ liệu đầu vào từ hệ điều hành là một thách thức rất đáng kể - nhưng Zhu lại đang làm được điều này. Chính vì vậy Álvarez tỏ ra đặc biệt ấn tượng với đóng góp đầu tiên của Zhu dành cho Firefox.

Có thể không phải ai cũng tạo ra được một commit tuyệt vời, nhưng một commit tuyệt vời có thể đến từ bất kỳ ai.

Nguyễn Hải

'Lỗ hổng nghiêm trọng' được tìm thấy trong trình duyệt Google Chrome

'Lỗ hổng nghiêm trọng' được tìm thấy trong trình duyệt Google Chrome

Người dùng Google Chrome nên cài đặt các bản cập nhật bảo mật mới nhất ngay lập tức, sau các báo cáo rằng tin tặc đang khai thác lỗ hổng "lỗ hổng nghiêm trọng", Nhóm Ứng cứu Khẩn cấp Máy tính Singapore (SingCERT) cho biết hôm nay (19/8).