Turns out that the following line:
// Set finalizer
runtime.SetFinalizer(&texture, (*Texture).release)
from backend/texture.go, which was intended to smoothly release C memory of freed by GC texture, in fact was a time bomb. When GC got the pointer it caused a SEGFAULT.
This is mmost likely because gl functions should be called in a very particular time (probably after or before ImGuiImpl_OpenGL3_NewFrame()) or maybe in a specific thred (?)