Запутанная обратная трассировка GDB при анализе файла дампа ядра в ../stdlib/strtod_l.c:734 - PullRequest
0 голосов
/ 11 декабря 2018

Я много искал в интернете, но почти ничего не получил.

И я не мог понять, о чем идет речь в обратном следе.

Я пока вижу заголовочный файл strtod_l.c,и у меня тоже ничего нет ..

Может кто-нибудь сказать мне, о чем говорит следующая обратная трассировка ??

Ограниченная информация, как показано ниже:

обратная трасса:

#0  0x00007f500cbc81d7 in __GI_____strtold_l_internal (nptr=0x0, nptr@entry=<error reading variable: Cannot access memory at address 0x7ffc62bd7080>, endptr=0x0, 
    endptr@entry=<error reading variable: Cannot access memory at address 0x7ffc62bd7080>, group=<error reading variable: Cannot access memory at address 0x7ffc62bd7080>, 
    loc=0xa, loc@entry=<error reading variable: Cannot access memory at address 0x7ffc62bd7080>) at ../stdlib/strtod_l.c:734
        negative = 0
        num = {122, 21474836580, 139981787769507, 4, 140721965054592, 104735783424, 12, 206158430256, 0, 0, 0, 21474836480, 139981809119232, 139981789144040, 4603109, 4631520, 
          139981809031072, 10, 139981787763014, 4631520, 139981789132016, 4603109, 140721965054816, 0, 4631243, 523986010119, 4631520, 4096, 4603109, 23794048, 4631520, 4603109, 
          4631243, 122, 139981787763186, 4603109, 8825424, 140721965054960, 140721965054956, 7, 4596508, 4631256, 139981789132844, 5, 68719476776, 3086276051892305922, 0, 
          4596304, 140721965055152, 8347784, 8347736, 9990, 4485598, 8825456, 8824304, 146037211137, 8825456, 4630114, 8824304, 5, 34, 140721965055152, 4508310, 4596304, 
          9570183567900679, 8825424, 8824304, 8347784, 140721965055552, 140721965055216, 4485875, 8825392, 8824304, 8825456, 4303791984, 140721965055264, 140721965055552, 
          140721965055264, 4486600, 140721965055264, 8824304, 8825392, 0, 140721965055360, 4488242, 4585968, 8824304, 8392704, 0, 8840488, 139981630533632, 1, 6828640, 0, 
          4294967296, 140721965055392, 4486758, 8347736, 8824304, 140721965055504, 4592519, 4630456, 140721965055552, 140721965055552, 4240909, 139981574112256, 139981574111232, 
          30, 1000, 6835336, 4378564, 8348392, 139981787806889, 8347688, 8347736, 42949682950, 8347784, 8348216, 139981574161232, 6829360, 8824304, 8824304, 8825456, 7, 8351648, 
          8959696, 8959776, 8959824, 128853616640, 0, 0, 0, 4225936, 140721965055904, 0, 0, 139981787712309, 140721965055944, 140721965055912, 12884901888, 4240560, 0, 
          5846830466878118791, 4225936, 140721965055904, 0, 0, 12600183551931161479, 12647238199348403079, 0, 0, 0, 4597872, 140721965055912, 3, 0, 0, 4225936, 140721965055904, 
          0, 4225977, 140721965055896, 28, 3, 140721965062176, 140721965062192, 140721965062195, 0, 140721965062207, 140721965062226, 140721965062259, 140721965062275, 
          140721965062286, 140721965062300, 140721965062337, 140721965062356, 140721965062367, 140721965063803, 140721965063897, 140721965063924, 140721965063952, 
          140721965063969, 140721965063992, 140721965064009, 140721965064017, 140721965064031, 140721965064085, 140721965064120, 140721965064151, 0, 33, 140721965211648, 16, 
          394918911, 6, 4096, 17, 100, 3, 4194368...}
        numsize = 0
        exponent = 0
        base = <optimized out>
        den = <error reading variable den (Cannot access memory at address 0x7ffc62bd5568)>
        densize = <optimized out>
        retval = {139981789132016}
        bits = 0
        cp = 0x7f500e01f000 ""
        tp = 0x0
        startp = 0x0
        start_of_digits = 0x0
        expp = <optimized out>
        dig_no = <optimized out>
        int_no = <optimized out>
        lead_zero = <optimized out>
        c = -32 '\340'
        decimal = <optimized out>
        decimal_len = <optimized out>
        thousands = 0x0
        grouping = <optimized out>
        cnt = <optimized out>
        current = <optimized out>
        lowc = -96 '\240'
Cannot access memory at address 0x7ffc62bd7080

И строка № 734 strtod_l.c:

 RETURN (negative ? -0.0 : 0.0,
           tp == start_of_digits ? (base == 16 ? cp - 1 : nptr) : tp);
     }

strtod_1.c: /usr/src/debug/glibc-2.17-c758a686/stdlib/strtod_l.c

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Необычно иметь такой короткий след.И наконец я понял, что это вызвано анализом файла coredump на другом компьютере.

0 голосов
/ 11 декабря 2018

Может быть, вы передали два нулевых указателя на strtod_l?Информация nptr=0x0 и endptr=0x0 выглядит следующим образом.

...