[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#761445: Not X.Org bug, probably libpciaccess0 one; fix attached



With the help of gdb memory breakpoints, I've found the bug and made a sort of fix for it...

The real problem is not in X.Org, but more in either libdrm-intel1 or libpciaccess0...

The problem is that libdrm-intel1 calls pci_system_init() and then pci_system_cleanup() in function drm_intel_probe_agp_aperture_size from intel_bufmgr.c, and it doesn't take into account that someone else may need it, while libpciaccess0 just blindly accepts all these calls and does init/deinit.

The solution that first came to my mind is to "reference count" init/deinit calls so real init doesn't happen twice, and real deinit doesn't happen until the last user calls cleanup. The patch is attached; X.Org crash goes away after rebuilding libpciaccess0 with it...

Maybe it also would be good to fix libdrm-intel1 in some way, but it seems a slightly harder task :-)

The bug probably should be retargeted to libpciaccess0 package...

--
With best regards,
  Vitaliy Filippov

Attachment: patch-libpciaccess-pci_sys-refcnt.diff
Description: Binary data


Reply to: