簡體   English   中英

valgrind memcheck 條件跳轉將其追溯到 brk 和 sbrk 函數

[英]valgrind memcheck conditional jump traces it back to brk and sbrk functions

我一直在尋找與我類似的帖子,但沒有成功。 我正在使用到目前為止似乎是確定性的代碼,並且現在可以正常工作。 但是,當在其上運行 Valgrind memcheck 時,我收到了數千條警告,所有警告都涉及“條件跳轉或移動取決於未初始化的值”。 在跟蹤錯誤時,valgrind 將其追溯到 brk 和 sbrk 函數。 我不明白為什么會這樣?更重要的是如何解決它?。 下面是我的代碼的一部分。

    navSolutions->channel.satPositions = (fl64 **) calloc(3 , sizeof(fl64*));
    ERRORCHECK(navSolutions->channel.satPositions == NULL)

    navSolutions->channel.satPositionsOld = (fl64 **) calloc(3 , sizeof(fl64*));
    ERRORCHECK(navSolutions->channel.satPositionsOld == NULL)

同樣重要的是,當為我分配內存的每個指針調用 free() 時,會發生很多這些調用。 任何幫助都會很棒。 提前致謝

作為此處快速回復的一部分,要求提供額外信息:大家好,感謝您的快速答復。 我的代碼在 Linux Mint 17.2 Cinamon 64 位上運行。 我也在使用以下版本的 gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4 和 valgrind 版本 3.10.1。 我也嘗試了 Nate Eldredge 給出的建議,但沒有成功。 這是一些 valgrind 輸出

==25494== Conditional jump or move depends on uninitialised value(s)
==25494==    at 0x4669D7: _int_malloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x4695C5: calloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x40C1F5: initNavSolution (initNavSolutions.c:57)
==25494==    by 0x401714: nav_init (nav_init.c:35)
==25494==    by 0x40107B: main (main.c:38)
==25494==  Uninitialised value was created
==25494==    at 0x4BA9CC: brk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x490C34: sbrk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x454793: __libc_setup_tls (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x4543FD: (below main) (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)

再次提前感謝大家

我在代碼中發現了錯誤。 我的問題是代碼是靜態構建的,而 valgrind 有問題。 在我將所有內容更改為動態鏈接過程后,一切正常。 謝謝大家!!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM