>>>>> Yaakov writes: > On 2013-06-10 07:46, Dr. Volker Zell wrote: >> I think the stack trace translates to the following: >> >> Stack trace: >> Frame Function Args >> ber_get_stringbvl >> /usr/src/debug/openldap-2.4.35-1/libraries/liblber/decode.c:414 >> ber_scanf >> /usr/src/debug/openldap-2.4.35-1/libraries/liblber/decode.c:790 >> ldap_get_attribute_ber >> /usr/src/debug/openldap-2.4.35-1/libraries/libldap/getattr.c:132 >> print_entry >> /usr/src/debug/openldap-2.4.35-1/clients/tools/ldapsearch.c:1634 >> main >> /usr/src/debug/openldap-2.4.35-1/clients/tools/ldapsearch.c:1222 >> >> The offending code line >> case BvOff: >> res.bo = (char *) b->result + b->off; >> ((struct berval *) (res.bo + tot_size))->bv_val = NULL; <- line 414 >> tot_size = 0; >> break;
> That is where it is crashing, but after some debugging, AFAICS the real culprit > is the call to ber_scanf() in ldap_get_attribute_ber(). Presumably because this > is a varargs function, the compiler wasn't able to handle the necessary type > promotion automatically (ber_len_t is an unsigned long); so b->off was showing > here as 0x600000000, taking line 414 off to la-la land. Patch attached and > pushed to Ports git. Thanks for the patch. I will try the openldap 64bit testsuite on the weekend. By the way is this something which should be send to upstream ? or is it cygwin specific. > Yaakov Ciao Volker