Thread (32 messages) 32 messages, 4 authors, 2017-09-07

Re: [PATCH v2 03/14] perf report: create real callchain entries for inlined frames

From: Milian Wolff <hidden>
Date: 2017-09-07 15:05:39
Also in: lkml

On Thursday, September 7, 2017 4:58:53 PM CEST Namhyung Kim wrote:
Hi Milian,
Hey Namhyung!
quoted
quoted
quoted
quoted
@@ -511,10 +563,63 @@ void inline_node__delete(struct inline_node
*node)

 	list_for_each_entry_safe(ilist, tmp, &node->val, list) {
 	
 		list_del_init(&ilist->list);

-		zfree(&ilist->filename);
-		zfree(&ilist->funcname);
+		zfree(&ilist->srcline);
+		// only the inlined symbols are owned by the list
+		if (ilist->symbol && ilist->symbol->inlined)
+			symbol__delete(ilist->symbol);
Existing symbols are released at this moment.
Thanks for the review, I'll try to look into these issues once I have
more
time again.
OK, so I just dug into this part of the patch again. I don't think it's
actually a problem after all:

When an inline node reuses the real symbol, that symbol won't have its
`inlined` member set to true. Thus these symbols will never get deleted by
inline_node__delete.
But ilist->symbol is a dangling pointer so accessing ->inlined would
be a problem, no?
Sorry, but I can't follow. Why would it be a dangling pointer? Note, again, 
that I've tested this with both valgrind and ASAN and neither reports any 
issues about this code.
quoted
If you have suggestions on how to make this clearer, I'm
all ears. For now, I'll add a comment to where we alias/reuse the symbol.

I'll try to split up the patch now to make it somehow easier to review.
Thanks for doing this, but I'm afraid I don't have time to review
before going to OSS-NA.
No problem, enjoy!
-- 
Milian Wolff | milian.wolff@kdab.com | Senior Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel: +49-30-521325470
KDAB - The Qt Experts

Attachments

  • smime.p7s [application/pkcs7-signature] 3826 bytes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help