Đôi khi ứng dụng của tôi đôi khi và chủ yếu trong malloc() và malloc_consolidate() khi tôi nhìn vào backtrace trong gdb.Segfaults trong malloc() và malloc_consolidate()
Tôi đã xác minh rằng máy có đủ bộ nhớ, thậm chí nó không bắt đầu hoán đổi. Tôi đã kiểm tra các gợi ý cho phân đoạn dữ liệu và kích thước bộ nhớ tối đa và cả hai được đặt thành 'không giới hạn'. Tôi cũng chạy ứng dụng dưới valgrind và không tìm thấy bất kỳ lỗi bộ nhớ nào.
Bây giờ, tôi không còn ý tưởng về những thứ khác có thể gây ra các segfaults này. Bất kỳ ý tưởng?
Cập nhật: Kể từ khi tôi không tìm thấy bất cứ điều gì với valgrind (hoặc ptrcheck), nó có thể là một ứng dụng khác đang làm dơ bẩn cấu trúc bộ nhớ libc hoặc là có một cấu trúc riêng biệt cho mỗi quá trình?
Bạn đã gặp sự cố trong valgrind chưa? –
Không, nó không bị hỏng. Một ứng dụng thời gian thực của nó và dưới valgrind tôi chỉ có thể đặt một tải rất nhẹ vào nó và nó thường chỉ bị treo dưới một tải nặng hơn. –
Hệ điều hành nào? Đánh giá bằng toolchain, có vẻ như nó có thể là Linux. Trong trường hợp này, không, các ứng dụng khác không thể phá hủy heap của bạn; đó là một cái gì đó trong ứng dụng của bạn. Nếu điều này chỉ xảy ra khi tải, điều đó làm cho tất cả trở nên khó khăn hơn ... Tất nhiên là gì dưới tải trọng? Làm thế nào điều này có thể được làm cho bạn để thùng rác đống? Hãy thử "tra tấn" ứng dụng của bạn tốt nhất bạn có thể trong khi nó chạy dưới Valgrind ... làm sao bạn có thể tái tạo tốt nhất các điều kiện tồn tại dưới tải? Có lẽ phân bổ bộ nhớ một cách vô cớ, một cái gì đó như thế? –