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.