Summary: | [SNB/IVB/HSW Bisected]Oglc draw-buffers2(advanced.blending.none) segfault | ||
---|---|---|---|
Product: | Mesa | Reporter: | lu hua <huax.lu> |
Component: | Drivers/DRI/i965 | Assignee: | Carl Worth <cworth> |
Status: | VERIFIED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | high | CC: | idr, xunx.fang |
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Proposed fix
A revised patch |
Description
lu hua
2013-01-16 02:29:34 UTC
Carl? It also fails on mesa 9.1 branch. Created attachment 75146 [details] [review] Proposed fix I just sent this out to the list for comments. Please feel free to test and comment. -Carl I test the patch on ivybridge, the test result is unstable. It segfaults once in 6 runs. Created attachment 75193 [details] [review] A revised patch > I test the patch on ivybridge, the test result is unstable. It > segfaults once in 6 runs. I have no theory that would explain that behavior. But, independently, I have an alternate patch which uses a slightly simpler condition, (and the same code as brw_cc.c). Please test this patch instead of the earlier one, and let me know if it works better. If not, then I'll get setup with oglconform so that I can test directly. -Carl Test your patch on ivybridge, it still segfaults once in 6 runs. I got oglconform working on my system, and verified the behavior you reported here, (consistent segaults on master, and less frequent segfaults with my patch applied). But I also tested mesa from commit 6d4d4b00ddfbd3257ecd129fec5b813be, (immediately before commit 258453716f001eab1288d99765213 bisected in the bug report above). The infrequent segfaults are already present there. So I believe the patches I have posted are correct, (I'll push the original one following some code review from Eric). But there appears to be an independent, pre-existing bug leading to the infrequent segfaults. -Carl (In reply to comment #7) > But there appears to be an independent, pre-existing bug leading to > the infrequent segfaults. And here's a valgrind report that seems consistent with the bug, obtained by running: valgrind ./oglconform -suite all -v 2 -test draw-buffers2 advanced.blending.none On this run, 13 of the 16 testcases passed without valgrind reporting any problems. Then, on the 14th testcase the error below was reported. This looks to me like a bug in oglconform itself, where it is reusing some resource in calling Context:make_current, where that resource was freed previously by a call to glxDestroyWindow. Now that I have pushed the fix for the originally bisected issue, I am closing this bug report. The oglconform problem should be tracked separately, (but it's not a bug in our driver). -Carl ==13683== Invalid read of size 8 ==13683== at 0x6B44312: dri2FlushFrontBuffer (dri2_glx.c:676) ==13683== by 0x82108F6: intel_flush_front (intel_context.c:296) ==13683== by 0x8211007: intel_glFlush (intel_context.c:545) ==13683== by 0x85FE758: _mesa_flush (context.c:1693) ==13683== by 0x85FE05E: _mesa_make_current (context.c:1479) ==13683== by 0x821220F: intelUnbindContext (intel_context.c:904) ==13683== by 0x82E2442: driUnbindContext (dri_util.c:421) ==13683== by 0x6B431ED: dri2_unbind_context (dri2_glx.c:195) ==13683== by 0x6B003C4: MakeContextCurrent (glxcurrent.c:255) ==13683== by 0x1A4B984: Context::make_current(Drawable_ const&) const (windowing.cpp:1440) ==13683== by 0x1A82025: (anonymous namespace)::run_schedule(Display_ const&, boost::shared_ptr<FbConfig>, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostAction>, std::allocator<boost::shared_ptr<PrePostAction> > > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) (executer.cpp:200) ==13683== by 0x1A81992: ExecutionManager::execute_schedules() (executer.cpp:84) ==13683== Address 0xc5346e8 is 24 bytes inside a block of size 208 free'd ==13683== at 0x4C28F5C: free (vg_replace_malloc.c:446) ==13683== by 0x6B436CB: dri2DestroyDrawable (dri2_glx.c:358) ==13683== by 0x6B3B089: DestroyDRIDrawable (glx_pbuffer.c:230) ==13683== by 0x6B3B85C: DestroyDrawable (glx_pbuffer.c:468) ==13683== by 0x6B3C3DC: glXDestroyWindow (glx_pbuffer.c:938) ==13683== by 0x1A4ABCA: Drawable_::~Drawable_() (windowing.cpp:1292) ==13683== by 0x1A83A5A: void boost::checked_delete<Drawable_>(Drawable_*) (checked_delete.hpp:34) ==13683== by 0x1A83DBB: boost::detail::sp_counted_impl_p<Drawable_>::dispose() (sp_counted_impl.hpp:78) ==13683== by 0x5426EB: boost::detail::sp_counted_base::release() (sp_counted_base_gcc_x86.hpp:145) ==13683== by 0x542764: boost::detail::shared_count::~shared_count() (shared_count.hpp:217) ==13683== by 0x82F7B5: boost::shared_ptr<Drawable_>::~shared_ptr() (shared_ptr.hpp:168) ==13683== by 0x1A8220F: (anonymous namespace)::run_schedule(Display_ const&, boost::shared_ptr<FbConfig>, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostAction>, std::allocator<boost::shared_ptr<PrePostAction> > > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) (executer.cpp:264) Verified.Fixed. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.