Khi AI giúp hồi sinh ký ức: Câu chuyện BattleTris và lỗi "stack smashing" sau 30 năm

Phần mềm26 tháng 5, 2026·4 phút đọc

Tại buổi họp mặt đại học kỷ niệm 30 năm, kỹ sư Bryan Cantrill và bạn bè đã hồi sinh thành công tựa game BattleTris cổ điển viết từ thập niên 90. Nhờ sự hỗ trợ của AI Claude, họ đã port mã nguồn từ hệ điều hành Solaris lỗi thời sang Linux và sửa chữa một lỗi "stack smashing" phức tạp. Câu chuyện này là một minh chứng cảm động về cách công nghệ, đặc biệt là AI, có thể phục vụ như một công cụ để kết nối con người và gìn giữ những khoảnh khắc đáng nhớ.

Khi AI giúp hồi sinh ký ức: Câu chuyện BattleTris và lỗi "stack smashing" sau 30 năm

Mới đây, tôi vừa tham dự buổi họp mặt kỷ niệm 30 năm tốt nghiệp đại học. Giữa những cuộc trò chuyện về nỗi lo lắng đối với tương lai của AI và tác động của các Mô hình Ngôn ngữ Lớn (LLM) lên công việc tri thức, một chủ đề khác cũng xuất hiện đầy hoài niệm: BattleTris.

BattleTris là tựa game do tôi và bạn bè phát triển vào năm 1994, khi chúng tôi còn là sinh viên. Đó là phiên bản Tetris hai người chơi cho phép đối thủ sử dụng tiền kiếm được để mua vũ khí gây rối loạn màn hình của nhau (lật ngược bảng, làm khối xoay mất kiểm soát...). Game từng là "hit" tại phòng máy của trường đại học Brown và thậm chí còn gắn liền với câu chuyện tình yêu của tôi.

Tuy nhiên, sau khi ra trường và bắt đầu sự nghiệp tại Sun Microsystems, BattleTris dần bị lãng quên. Mã nguồn nằm im lìm trên hệ điều hành Solaris cũ kỹ, trong khi thế giới đã chuyển sang Linux và macOS.

Hồi sinh một "di sản" kỹ thuật

Tại buổi họp lớp, nhiều người hỏi về số phận của BattleTris. Tôi và người bạn cũ, cũng là đồng nghiệp tại Sun - Adam Leventhal, quyết định sẽ làm cho game chạy lại được. Đây là một nhiệm vụ khó khăn vì mã nguồn đã 30 năm tuổi, viết cho C++ và X/Windows thời xưa.

Chúng tôi đã nhờ đến sự trợ giúp của Claude (mô hình AI của Anthropic).

Adam bắt đầu bằng việc yêu cầu Claude xử lý màn hình chào (splashscreen) của game. Kết quả thật đáng kinh ngạc; trong thời gian ngắn, Claude đã giải quyết được các vấn đề phức tạp để hiển thị giao diện. Tôi tiếp nối bằng việc yêu cầu Claude port game sang Linux. Quá trình này gặp phải những lỗi rắc rối, bao gồm cả việc debug file cấu hình .Xresources, nhưng cuối cùng chúng tôi cũng đã khiến game chạy được trên máy tính hiện đại.

Vụ án "Stack Smashing"

Niềm vui ngắn chẳng tày gang. Khi Adam và tôi thử chơi trận BattleTris đầu tiên sau hai thập kỷ, game đã bị crash ngay lập tức với thông báo lỗi đáng sợ:

*** stack smashing detected ***: terminated

Đây là lỗi tràn bộ nhớ đệm (buffer overflow) trên ngăn xếp (stack), một loại lỗi nghiêm trọng thường bị các hacker khai thác. Không có file dump (core) để phân tích, chúng tôi lại nhờ đến Claude.

Claude đã quét mã nguồn và tìm ra thủ phạm ngay lập tức. Trong hàm sendBoard, bộ nhớ đệm được cấp phát với kích thước sizeof(int) (4 byte trên hệ thống 64-bit), nhưng hàm ghi dữ liệu BTNET_PUTLONG lại sử dụng sizeof(unsigned long) (8 byte trên hệ thống 64-bit).

Với kích thước bảng chơi là 280 ô, việc ghi 2240 byte vào một bộ đệm chỉ có 1120 byte đã gây ra tràn bộ nhớ. Lỗi này không xảy ra trên hệ thống Solaris 32-bit gốc vì ở đó intlong đều có kích thước bằng nhau (4 byte).

Claude không chỉ tìm ra lỗi mà còn giải thích rõ ràng cơ chế và nguyên nhân sâu xa. Chúng tôi áp dụng bản vá, biên dịch lại và... chiến!

BattleTris selfieBattleTris selfie

AI: Công cụ kết nối con người

Chúng tôi đã chơi BattleTris suốt đêm hôm đó tại ngôi nhà ven biển. Đó là một buổi họp lớp hoàn hảo, đầy ắp kỷ niệm và niềm vui.

Không ngoa khi nói rằng khoảnh khắc này được mang đến bởi Claude. Chúng tôi có thể đã làm được mà không cần AI, nhưng thực tế là 20 năm trôi qua chúng tôi chưa làm được. Việc port mã nguồn cũ kỹ là một công việc tẻ nhạt và đầy rủi ro, rất khó để tiên đoán tiến độ. AI đã giúp chúng tôi vượt qua sự trì trệ đó.

Điều này đặt ra một câu hỏi thú vị về mối quan hệ giữa con người và AI. Chính thứ công nghệ mà chúng ta lo sợ sẽ tước đi tính nhân văn của chúng ta (LLM) lại là công cụ giúp tạo nên một khoảnh khắc đầy tính nhân văn và kết nối bạn bè sâu sắc.

Tôi tin rằng LLM chỉ là một công cụ, dù cực kỳ mạnh mẽ. Khi chúng ta ngừng coi nó là một công cụ và bắt đầu sợ hãi nó như một kẻ thống trị máy móc phi nhân tính, chúng ta đã tự giới hạn bản thân mình. Tương lai sẽ còn nhiều trải nghiệm tuyệt vời như BattleTris - những khoảnh khắc nhắc nhở chúng ta lý do tại sao chúng ta lại xây dựng công nghệ.

BattleTris đã trở lại. Và hãy kiên nhẫn, vì chúng tôi có một vài điều thú vị sắp được công bố!

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗