Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.GOLDED
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 27 Jun 24 12:59:36, всего сообщений: 3580
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2851 из 3580 ======================================== RU.GOLDED =
От   : Nil A                            2:5015/46          13 Oct 23 21:35:16
Кому : Vitaliy Aksyonov                                    13 Oct 23 21:35:16
Тема : Арифметика указателей UB в throw_realloc_debug()
FGHI : area://RU.GOLDED?msgid=2:5015/46+65298df8
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.GOLDED?msgid=1:104/117+652e1617
==============================================================================
Hello, Vitaliy!

Во-первых, зачем по-умолчанию включены отладки GTHROW_LOG и GTHROW_DEBUG? Я иногда видел какие-то трейсы про память пишутся в golded.log, но реально, хоть что-то когда-нибудь присылал сюда в эху, или куда-то, какие-то отладочные трейсы памяти?

Отладка GTHROW_DEBUG в голдеде сделана таким образом, что они аллоцируют памяти больше на структурку Throw, и прячут её в начале. Перед адресом и после обкладывают магическими цифирками BEFOREVAL и AFTERVAL, чтобы потом на недоезды и заезды проверить. Также они двухсвязный список хранят, чтобы потом потерянную память напечатать. А потом пришёл Гугл и запили ASAN билды, и такое делать в ручную уже стало не нужно, так что выключить по-умолчанию я бы рекомендовал.


Решилось мне прогнать UBSAN билд, и прямо на запуске, где происходит сканирование всех областей (баз эх), случается UB

/home/fido/src/golded-plus/goldlib/gall/gmemdbg.cpp:130:53: runtime error: pointer index expression with base 0x000000000000 overflowed to 0xffffffffffffffd4
    #0 0xae8fbc in throw_ptrtodl(void const*) /home/fido/src/golded-plus/goldlib/gall/gmemdbg.cpp:130
    #1 0xae6a1c in throw_realloc_debug(void*, unsigned long, char const*, int) /home/fido/src/golded-plus/goldlib/gall/gmemdbg.cpp:389
    #2 0x94880f in SquishArea::refresh() /home/fido/src/golded-plus/goldlib/gmb3/gmosqsh2.cpp:71
    #3 0x94b7f1 in SquishArea::raw_scan(int, int) /home/fido/src/golded-plus/goldlib/gmb3/gmosqsh2.cpp:153
    #4 0x94fd9b in SquishArea::scan_area() /home/fido/src/golded-plus/goldlib/gmb3/gmosqsh2.cpp:333
    #5 0x7ebee5 in Area::ScanArea() /home/fido/src/golded-plus/golded3/gescan.cpp:71
    #6 0x7efc77 in AreaList::AreaScan(int, unsigned int, int, int&, int&, char const*) /home/fido/src/golded-plus/golded3/gescan.cpp:281
    #7 0x7b236f in Reader() /home/fido/src/golded-plus/golded3/geread.cpp:171
    #8 0x6c63bb in main /home/fido/src/golded-plus/golded3/gemain.cpp:54
    #9 0x7f7f53f1ef44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21f44)
    #10 0x407c98  (/home/fido/src/golded-plus/build_asan/golded3/golded+0x407c98)

Тут хотят вычитать целиком .SQI индекс файл в память. Зовут функцию throw_realloc(), где оригинальный указатель в NULL. Так то норм, звать realloc с nullptr, тогда он просто в malloc() превращается.

Вобщем-то бага то и нет, но всё равно, я бы почиНИЛ throw_realloc_debug(), пододвинул throw_ptrtodl() туда, где он реально используется. Т.е. вот такой фикс бы влил, но.. у меня нет на гитхабе аккаунта.

--- a/goldlib/gall/gmemdbg.cpp
+++ b/goldlib/gall/gmemdbg.cpp
@@ -386,7 +386,6 @@ void* throw_realloc_debug(void* __oldptr, size_t __size, const char* __file, int
 {

     void* _ptr;
-    Throw* dl = throw_ptrtodl(__oldptr);

     if(__size == 0)
     {
@@ -399,6 +398,7 @@ void* throw_realloc_debug(void* __oldptr, size_t __size, const char* __file, int
     }
     else
     {
+        Throw* dl = throw_ptrtodl(__oldptr);
        _ptr = throw_malloc_debug(__size,__file,__line);
         if(dl->nbytes < __size)
             __size = dl->nbytes;


Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.034592 секунды