Dear Josh,<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><br>> If I understand correctly, if you find memory leak, you want to find the corresponding call(s) to malloc() that allocated the memory object, correct?  Can you more completely explain what you are trying to accomplish?</blockquote><div><br></div><div>Thanks for your reply. In my task, I use data flow analysis to locate a program point where a malloc must be leaked (by must leaked, I mean (a) it must be allocated, (b) must not be free()d and (c) never used in the future). And I want to fix this leak by finding a pointer must point to that malloc(). So I want to perform a must-alias query.</div><div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>>However, DSA is a unification-based analysis, so I would think that the accuracy of a must-alias feature would be pretty weak.  Also, DSA loses precision as it performs more inter-procedural analysis (the local analysi>s will be the most precise but will have many Incomplete DSNodes; the Bottom-Up and Top-Down propagate information up and down the call graph but will cause further DSNode merging). </div></blockquote><div><br></div>Thanks for your clarification. I agree with you. Even if we implemented a MustAlias interface in DSA, it will be too weak.<br><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><br></div><div>>It may be that you will need a more accurate points-to analysis algorithm for your work.</div></blockquote><br><div>In fact, my task can be solved in a simpler (while less elegant) way. If I want to find pointers must-alias with a malloc() call, I can create a new variable storing the result returned by the malloc() when it is called. </div><div><br></div><div>Thanks for your help.</div><div><br></div><div>Best regards, Zhixuan Yang</div>