fluent / fluent/fluent-logger-java

Bad thread interleaving may cause unexpected crash

Đang mở
#100 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
210
Fork
86
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Commit version - da14ec3

Describe the bug

It is possible to encounter an unexpected crash due to using the shared variable array in multiple locations (variable name is counters, in TestFluentLogger). In one place at Line 403 sets the value in this data-structure, whereas another location at Line 461 gets the value from this shared variable. However, there is no synchronization given between these accesses. As a result, anytime due to the existence of multiple threads, the program may crash.

Expected behavior
No crash is expected

Additional context
When I investigated the TestFluentLogger class, I found that the counters is a shared variable declared at Line 385 that is used at Line 403, Line 461. Here, the unexpected crash or inconsistency may occur if multiple threads interleave.

Environment:
I ran the test on an Ubuntu 20.04 LTS machine using OpenJDK 1.8.0_312.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách xem xét lớp TestFluentLogger tại phần khai báo counter quanh dòng 385 và các lần truy cập của nó quanh các dòng 403 và 461. Tái hiện hoặc kiểm tra test trong điều kiện đan xen giữa nhiều thread trên môi trường Java đã nêu, sau đó xác minh rằng các lần truy cập dùng chung không còn cho phép xảy ra crash hoặc tạo ra kết quả không nhất quán.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
testing
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.