I found the problem. When pair->value = 320 enter to this code (libyahoo/libyahoo2.c) line 1622 (enterim 2.4.22 with the latest Roger's patch applied: case 302: /* This is always 318 before a group, 319 before the first s/n in a group, 320 before any ignored s/n. * It is not sent for s/n's in a group after the first. * All ignored s/n's are listed last, so when we see a 320 we clear the group and begin marking the * s/n's as ignored. It is always followed by an identical 300 key. */ if (pair->value && !strcmp(pair->value, "320")) { /* No longer in any group; this indicates the start of the ignore list. */ l = NULL; } break; how l = NULL, then the next iteration occurs the SEGFAULT for (l = pkt->hash; l ; l = l->next) { I don't know why don't break the loop.