Size: a a a

2021 March 15

IZ

Ilia Zviagin in pro.cxx
koren
Из примечательного. Воспроизводится этот баг только в Debug билде в Visual Studio. На Release всё нормально
Да плюнь ты на этот дебаг, чёрд с ним!
источник

k

koren in pro.cxx
Ilia Zviagin
Да плюнь ты на этот дебаг, чёрд с ним!
А без Debug я не могу посмотреть часть состояния переменных
источник

IZ

Ilia Zviagin in pro.cxx
koren
А без Debug я не могу посмотреть часть состояния переменных
Гляди ка, какая неприятность...
источник

k

koren in pro.cxx
Ilia Zviagin
Гляди ка, какая неприятность...
Большая неприятность, так как переменные оптимизируются
источник

IZ

Ilia Zviagin in pro.cxx
koren
А без Debug я не могу посмотреть часть состояния переменных
Прогони программу под DrMemory ...
источник

k

koren in pro.cxx
koren
Она пытается освободить некий std::vector<int>, которого и в помине нет в коде
shader::TranslationState::~TranslationState(void)
mov         qword ptr [rsp+8],rcx
push        rdi
sub         rsp,20h
mov         rdi,rsp
mov         ecx,8
mov         eax,0CCCCCCCCh
rep stos    dword ptr [rdi]
mov         rcx,qword ptr [this]
mov         rax,qword ptr [this]
add         rax,60h
mov         rcx,rax
call        std::vector<unsigned int,std::allocator<unsigned int> >::~vector<unsigned int,std::allocator<unsigned int> > (07FF6C5C08C79h)
mov         rax,qword ptr [this]
add         rax,40h
mov         rcx,rax
call        std::vector<shader::VarToReg,std::allocator<shader::VarToReg> >::~vector<shader::VarToReg,std::allocator<shader::VarToReg> > (07FF6C5BCCCB5h)
mov         rax,qword ptr [this]
mov         rcx,rax
call        std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> > (07FF6C5BBF560h)
add         rsp,20h
pop         rdi

call        std::vector<unsigned int,std::allocator<unsigned int> >::~vector<unsigned int,std::allocator<unsigned int> > (07FF6C5C08C79h)
и вызывает вылет
источник

IZ

Ilia Zviagin in pro.cxx
koren
shader::TranslationState::~TranslationState(void)
mov         qword ptr [rsp+8],rcx
push        rdi
sub         rsp,20h
mov         rdi,rsp
mov         ecx,8
mov         eax,0CCCCCCCCh
rep stos    dword ptr [rdi]
mov         rcx,qword ptr [this]
mov         rax,qword ptr [this]
add         rax,60h
mov         rcx,rax
call        std::vector<unsigned int,std::allocator<unsigned int> >::~vector<unsigned int,std::allocator<unsigned int> > (07FF6C5C08C79h)
mov         rax,qword ptr [this]
add         rax,40h
mov         rcx,rax
call        std::vector<shader::VarToReg,std::allocator<shader::VarToReg> >::~vector<shader::VarToReg,std::allocator<shader::VarToReg> > (07FF6C5BCCCB5h)
mov         rax,qword ptr [this]
mov         rcx,rax
call        std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> > (07FF6C5BBF560h)
add         rsp,20h
pop         rdi

call        std::vector<unsigned int,std::allocator<unsigned int> >::~vector<unsigned int,std::allocator<unsigned int> > (07FF6C5C08C79h)
и вызывает вылет
Вот же есть у тебя вектор,,

std::vector<VarToReg> var_to_regs;
источник

k

koren in pro.cxx
Ilia Zviagin
Вот же есть у тебя вектор,,

std::vector<VarToReg> var_to_regs;
Этот вектор вызывается ниже
источник

IA

Ilia Abernikhin in pro.cxx
Hint attribures это часом не вектор  енамов какойнить?
источник

k

koren in pro.cxx
Ilia Abernikhin
Hint attribures это часом не вектор  енамов какойнить?
Убрал часть кода чтобы не путать
источник

IZ

Ilia Zviagin in pro.cxx
koren
В общем. Есть такого вида код:
struct TranslationState {
   std::string hash;
   std::string last_frag_data_id;
   std::string color_attachment_id;
   std::string mask_id;
   std::vector<VarToReg> var_to_regs;
   bool is_maskupdate;
   bool is_fragment;
``
   TranslationState(std::string hash, bool is_fragment, bool is_maskupdate)
       : hash(hash)
       , last_frag_data_id({})
       , color_attachment_id({})
       , mask_id({})
       , var_to_regs({})
       , is_fragment(is_fragment)
       , is_maskupdate(is_maskupdate) {}
};

static std::string convert_gxp_to_glsl(const SceGxmProgram& program, const std::string& shader_hash, bool maskupdate) {
   TranslationState translation_state = TranslationState(shader_hash, program.is_fragment(), maskupdate);
   return {};
}

Он пытается освободить TranslationState но вылетает с эксепшеном read access violation _Pnext was 0xFFFFFFFFFFFFFFFF
TranslationState translation_state(shader_hash, program.is_fragment(), maskupdate);
   return std::string();

Так
не лучше будет?
источник

k

koren in pro.cxx
Ilia Zviagin
TranslationState translation_state(shader_hash, program.is_fragment(), maskupdate);
   return std::string();

Так
не лучше будет?
Там не в этом проблема, а в освобождении фантомного вектора в TranslationState
источник

IZ

Ilia Zviagin in pro.cxx
koren
Там не в этом проблема, а в освобождении фантомного вектора в TranslationState
Нет никакого фантомного вектора.
Рой носом, ищи , где У ТЕБЯ ошибка.
источник

k

koren in pro.cxx
Ilia Zviagin
Нет никакого фантомного вектора.
Рой носом, ищи , где У ТЕБЯ ошибка.
Откуда тогда же вылезает вектор с интом то?
источник

k

koren in pro.cxx
У меня в struct его нет
источник

IZ

Ilia Zviagin in pro.cxx
koren
Там не в этом проблема, а в освобождении фантомного вектора в TranslationState
Это не чудо, и не явление Архангела, это - конкретная ошибка в твоей программе.
источник

IZ

Ilia Zviagin in pro.cxx
koren
Откуда тогда же вылезает вектор с интом то?
Значит ищи.
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
koren
Она пытается освободить некий std::vector<int>, которого и в помине нет в коде
Попробуй в стд хедер добавить статик ассерт на инт в вектор
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Прям руками
источник

IZ

Ilia Zviagin in pro.cxx
koren
Откуда тогда же вылезает вектор с интом то?
VarToReg это что?
источник