Vào hôm qua, một dự án của chúng tôi đã gặp phải lỗi vòng lặp vô hạn nghiêm trọng. Sau hơn 10 tiếng đồng hồ gỡ lỗi, cuối cùng chúng tôi xác định nguyên nhân xuất phát từ lỗi trong phiên bản Lua 5.3.4.
Sự việc bắt đầu khi chúng tôi tích hợp một thư viện do tôi phát triển gần đây nhằm tối ưu hóa việc tải hàng loạt dữ liệu cấu hình cho ứng dụng client. Cơ chế hoạt động của thư viện này là chuyển đổi bảng dữ liệu thành cấu trúc C, lưu trữ trong một vùng nhớ liên tục. Khi chạy chương trình, chỉ những phần dữ liệu cần thiết mới được nạp vào máy ảo. Giải pháp này giúp tăng tốc độ tải dữ liệu lên gấp nhiều lần. Trong quá trình tích hợp, nhóm phát triển có thực hiện một thay đổi nhỏ: thiết lập tất cả bảng dữ liệu thành kiểu weaktable để cho phép hệ thống thu gom rác (GC) tự động giải phóng các mục dữ liệu không còn sử dụng.