The bug is not fixed in version 16. I finded the reason is the fuc: __keyeqfn .In this fuc, memcmp compare 8 bytes, but struct syntab_key real size is 6 bytes, have 2 bytes is padded, so compare often is not equal.
I sugget modfiy the struct syntab_key to:
struct syntab_key {
int addr;
unsigned short port;
} __attribute__((packed));
or do memset 0 after malloc syntab_key in fuc: syntab_add