Re: Don't clean up LLVM state when exiting in a bad way

Поиск
Список
Период
Сортировка
От Zhihong Yu
Тема Re: Don't clean up LLVM state when exiting in a bad way
Дата
Msg-id CALNJ-vRS561jVoXDQQDaJkNvpshkJfEsJWqcm=jp42j=pyBT_g@mail.gmail.com
обсуждение исходный текст
Ответ на Don't clean up LLVM state when exiting in a bad way  (Jelte Fennema <Jelte.Fennema@microsoft.com>)
Список pgsql-hackers


On Wed, Aug 18, 2021 at 8:01 AM Jelte Fennema <Jelte.Fennema@microsoft.com> wrote:
Hi,

I ran into some segfaults when using Postgres that was compiled with LLVM 7. According to the backtraces these crashes happened during the call to llvm_shutdown, during cleanup after another out of memory condition. It seems that calls to LLVMOrcDisposeInstance, can crash (at least on LLVM 7) when LLVM is left in bad state. I attached the relevant part of the stacktrace to this email.

With the attached patch these segfaults went away. The patch turns llvm_shutdown into a no-op whenever the backend is exiting with an error. Based on my understanding of the code this should be totally fine. No memory should be leaked, since all memory will be cleaned up anyway once the backend exits shortly after. The only reason this cleanup code even seems to exist at all is to get useful LLVM profiling data. To me it seems be acceptable if the profiling data is incorrect/missing when the backend exits with an error.  

Jelte
Hi,
Minor comment:

+        * shut LLVM down, this can result into a segfault. So if this process 

result into a segfault -> result in a segfault

Cheers

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Jelte Fennema
Дата:
Сообщение: Don't clean up LLVM state when exiting in a bad way
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: NAMEDATALEN increase because of non-latin languages