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
patch-libpciaccess-pci_sys-refcnt.diff
Description: Binary data