I've just run the same version of localedef on 2.6.22-14, where it runs fine, and on 2.6.22-15, where it hangs.
Here's the output of "strace localedef" immediately before it hung:
1218150691.384821 creat("/usr/lib/locale/en_NZ.utf8/LC_CTYPE", 0666) = 3 1218150691.403450 writev(3, [{"\x15\x11\x03\x20\x58\x00\x00\x00", 8}, {"\x68\x01\x00\x00\x68\x04\x00\x00\x68\x0a\x00\x00\x68\x0a"..., 352}, {"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"..., 768}, {"\x80\x00\x00\x00\x81\x00\x00\x00\x82\x00\x00\x00\x83\x00"..., 1536}, {NULL, 0}, {"\x80\x00\x00\x00\x81\x00\x00\x00\x82\x00\x00\x00\x83\x00"..., 1536}, {NULL, 0}, {"\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"..., 1024}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {"\x75\x70\x70\x65\x72\x00", 6}, {"\x6c\x6f\x77\x65\x72\x00", 6}, {"\x61\x6c\x70\x68\x61\x00", 6}, {"\x64\x69\x67\x69\x74\x00", 6}, {"\x78\x64\x69\x67\x69\x74\x00", 7}, {"\x73\x70\x61\x63\x65\x00", 6}, {"\x70\x72\x69\x6e\x74\x00", 6}, {"\x67\x72\x61\x70\x68\x00", 6}, {"\x62\x6c\x61\x6e\x6b\x00", 6}, {"\x63\x6e\x74\x72\x6c\x00", 6}, {"\x70\x75\x6e\x63\x74\x00", 6}, {"\x61\x6c\x6e\x75\x6d\x00", 6}, {"\x63\x6f\x6d\x62\x69\x6e\x69\x6e\x67\x00", 10}, {"\x63\x6f\x6d\x62\x69\x6e\x69\x6e\x67\x5f\x6c\x65\x76\x65"..., 17}, {"\x00\x00\x00\x00", 4}, {"\x74\x6f\x75\x70\x70\x65\x72\x00", 8}, {"\x74\x6f\x6c\x6f\x77\x65\x72\x00", 8}, {"\x74\x6f\x74\x69\x74\x6c\x65\x00", 8}, {"\x00\x00\x00\x00", 4}, {"\x10\x00\x00\x00\x11\x00\x00\x00\x07\x00\x00\x00\xff\x01"..., 25560}, ...], 125
Note the "{NULL, 0}" elements.
Now it's a matter of getting a suitable kernel patch.
I've just run the same version of localedef on 2.6.22-14, where it runs fine, and on 2.6.22-15, where it hangs.
Here's the output of "strace localedef" immediately before it hung:
1218150691.384821 creat(" /usr/lib/ locale/ en_NZ.utf8/ LC_CTYPE" , 0666) = 3 x11\x03\ x20\x58\ x00\x00\ x00", 8}, {"\x68\ x01\x00\ x00\x68\ x04\x00\ x00\x68\ x0a\x00\ x00\x68\ x0a"... , 352}, {"\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00\x00\ x00"... , 768}, {"\x80\ x00\x00\ x00\x81\ x00\x00\ x00\x82\ x00\x00\ x00\x83\ x00"... , 1536}, {NULL, 0}, {"\x80\ x00\x00\ x00\x81\ x00\x00\ x00\x82\ x00\x00\ x00\x83\ x00"... , 1536}, {NULL, 0}, {"\x00\ x00\x02\ x00\x00\ x00\x02\ x00\x00\ x00\x02\ x00\x00\ x00"... , 1024}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {"\x75\ x70\x70\ x65\x72\ x00", 6}, {"\x6c\ x6f\x77\ x65\x72\ x00", 6}, {"\x61\ x6c\x70\ x68\x61\ x00", 6}, {"\x64\ x69\x67\ x69\x74\ x00", 6}, {"\x78\ x64\x69\ x67\x69\ x74\x00" , 7}, {"\x73\ x70\x61\ x63\x65\ x00", 6}, {"\x70\ x72\x69\ x6e\x74\ x00", 6}, {"\x67\ x72\x61\ x70\x68\ x00", 6}, {"\x62\ x6c\x61\ x6e\x6b\ x00", 6}, {"\x63\ x6e\x74\ x72\x6c\ x00", 6}, {"\x70\ x75\x6e\ x63\x74\ x00", 6}, {"\x61\ x6c\x6e\ x75\x6d\ x00", 6}, {"\x63\ x6f\x6d\ x62\x69\ x6e\x69\ x6e\x67\ x00", 10}, {"\x63\ x6f\x6d\ x62\x69\ x6e\x69\ x6e\x67\ x5f\x6c\ x65\x76\ x65"... , 17}, {"\x00\ x00\x00\ x00", 4}, {"\x74\ x6f\x75\ x70\x70\ x65\x72\ x00", 8}, {"\x74\ x6f\x6c\ x6f\x77\ x65\x72\ x00", 8}, {"\x74\ x6f\x74\ x69\x74\ x6c\x65\ x00", 8}, {"\x00\ x00\x00\ x00", 4}, {"\x10\ x00\x00\ x00\x11\ x00\x00\ x00\x07\ x00\x00\ x00\xff\ x01"... , 25560}, ...], 125
1218150691.403450 writev(3, [{"\x15\
Note the "{NULL, 0}" elements.
Now it's a matter of getting a suitable kernel patch.