On Thu, Jul 06, 2017 at 11:18:39PM -0700, Christopher Li wrote: > On Thu, Jul 6, 2017 at 11:04 PM, Luc Van Oostenryck > <luc.vanoostenryck@xxxxxxxxx> wrote: > > On Thu, Jul 06, 2017 at 06:18:48PM -0700, Christopher Li wrote: > >> On Thu, Jul 6, 2017 at 5:40 PM, Christopher Li <sparse@xxxxxxxxxxx> wrote: > >> Most noticablely remove_usage() inside of the kill_use_list() > >> loop. > > > > Can you explain a bit what's wrong with this one? > > Sure. Sorry I haven't be more specific. > The offending list in question is not the instruction list. It is the > pesudo->user list. > > kill_use_list is iterate though p->user. > FOR_EACH_PTR(list, p) { > if (p == VOID) > continue; > kill_use(THIS_ADDRESS(p)); > } END_FOR_EACH_PTR(p) > > > And remove_usage() is deleting the very same list > from with in the loop. That is the bug. Strange. kill_use_list() is only iterated via insn->phi_list or insn->arguments, not p->user. But yes, something is surely messing with the lists here. > It likely a different bug than the one you discover. > Your crash is likely cause by pack_ptr_list inside the > ptrlist loop. Which cause some pointer point to deleted > node. Yes, it's a different one. Mine wasn't through pack_ptr_list() but directly in the macros doing the list walking of ep->bbs. Anyway, look at all this later. -- Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html