Closed Bug 1113837 Opened 6 years ago Closed 6 years ago

Build display-list dumping without MOZ_DUMP_PAINTING

Categories

(Core :: Layout, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla37

People

(Reporter: BenWa, Assigned: BenWa)

References

(Blocks 1 open bug)

Details

Attachments

(2 files, 5 obsolete files)

Attached patch patch (obsolete) — Splinter Review
The display-list dump is now a central feature for graphics debugging and will now be used by the profiler to visualize painting. We should make this available by default.
Attachment #8539515 - Flags: review?(mstange)
Comment on attachment 8539515 [details] [diff] [review]
patch

Review of attachment 8539515 [details] [diff] [review]:
-----------------------------------------------------------------

What's the reason for the gfxUtils.cpp change? I think checking an env variable just once on startup should be fine, performance-wise.
Attachment #8539515 - Flags: review?(mstange) → review+
I didn’t want to check an env variable for something that would never get used
Attached patch patch v2 (obsolete) — Splinter Review
Forgot to remove the #ifdef for nsDisplayGeneric::mName.
Assignee: nobody → bgirard
Attachment #8539515 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #8539520 - Flags: review+
Attached patch patch v3 (obsolete) — Splinter Review
does what I said in v2 but properly this time.
Attachment #8539520 - Attachment is obsolete: true
Attachment #8539543 - Flags: review+
Attached patch patch v4 (obsolete) — Splinter Review
minor tweaks
Attachment #8539543 - Attachment is obsolete: true
Attachment #8539584 - Flags: review+
Attached patch patch v5 (obsolete) — Splinter Review
Attachment #8539584 - Attachment is obsolete: true
Attachment #8539586 - Flags: review+
UniqueSelector calls operator new whichs gets translated to valgrind's memcheck malloc, but the UniquePtr reset() calls memchecks operator delete.

Could this be a bug in either memcheck or our memory shim? Outwardly we're calling both opeator new / operator delete.
Flags: needinfo?(jseward)
(In reply to Benoit Girard (:BenWa) from comment #8)
> Could this be a bug in either memcheck or our memory shim? Outwardly we're
> calling both opeator new / operator delete.

The Gecko code is fine; you can safely ignore this.  FWIW it happens because
|operator new| is inlined into its caller |detail::UniqueSelector|

==47856==    by 0x7625757: moz_xmalloc (mozalloc.cpp:52)
==47856==    by 0x9807C96: operator new (mozalloc.h:210)
==47856==    by 0x9807C96: mozilla::detail::UniqueSelector<std::basic_st[..]

whereas |operator delete| isn't

==47856==    at 0x4C2827E: operator delete(void*) (in /usr/lib64/valgrin[..]
==47856==    by 0x54F5D6C: std::basic_stringstream<char, std::char_trait[..]

so Memcheck can intercept calls to |delete| but there's no call to |new|
to intercept; instead it intercepts only the |malloc| called by |new|.

For now you can run with --show-mismatched-frees=no.  Alternatively try
building Fx with -O2, since I suspect that increases the inlining aggressiveness
and causes both |new| and |delete| to get inlined, removing the asymmetry.
Flags: needinfo?(jseward)
Attached patch patch v6Splinter Review
Attachment #8539586 - Attachment is obsolete: true
Attachment #8543043 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/65adc56e14a9
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
No longer depends on: 1117817
Blocks: 1462177
You need to log in before you can comment on or make changes to this bug.