Tôi có trình điều khiển thử nghiệm được liên kết với thư viện tôi đã viết. Thư viện sử dụng các autotools để nó tạo ra cả tệp nén (.a) và thư viện động (.so).Lỗi valgrind khi được liên kết với -static - Tại sao?
Khi tôi liên kết trình điều khiển của tôi với 'g ++ -static', có lẽ liên kết đến .a, valgrind sáng lên phàn nàn nhiều lần 'Điều kiện nhảy hoặc di chuyển phụ thuộc vào giá trị uninitialised (s)'. Lỗi đầu tiên xảy ra trước chính trong __pthread_initialize_minimal.
Khi tôi liên kết mà không có -static, có lẽ liên kết với .so, tôi không nhận được bất kỳ khiếu nại valgrind nào.
Có ai biết tại sao không? Liệu valgrind chỉ không hoạt động với -static?
CẬP NHẬT: Tôi không thể gửi thậm chí là một phiên bản thu hẹp đà giảm của tài xế của tôi bởi vì nó liên kết đến một thư viện rất lớn mà tôi không thể có thể pare xuống, nhưng tôi nhận thấy rằng đơn giản nhất của tất cả các chương trình
int main()
{
return 0;
}
đưa ra một lỗi khi liên kết với -static và chạy từ valgrind:
==15449== Use of uninitialised value of size 8
==15449== at 0x40B0F3: exit (in /home/jdgordo/src/t)
tôi nên tôi đã bao gồm mà tôi đang chạy trên 64-bit Redhat 5.5.
cố gắng thu hẹp sự cố với ít dòng mã nhất có thể và đăng tại đây. – fazo
Có rất nhiều lỗ hổng và phím tắt trong các thư viện hệ thống khác nhau để nó không phải là bất thường để xem những người đi lên trong valgrind. Bạn có thể cố gắng bỏ qua chúng một cách có hệ thống, tôi cho rằng, hoặc chỉ làm thử nghiệm của bạn với phiên bản được chia sẻ. –
Tôi không thấy điều này trên hệ thống của mình. @KerrekSB - là đúng mặc dù, nó không thực sự là một cái gì đó để lo lắng và valgrind tàu với một tập tin lớn mà ngăn chặn hầu hết trong số này. Nó có thể hơi phù hợp với phiên bản libc/compiler của bạn bằng cách nào đó. – Flexo