On Mon, 16 Feb 2004, Pierre A. Humblet wrote: > At 01:20 PM 2/16/2004 -0500, Christopher Faylor wrote: > >On Mon, Feb 16, 2004 at 12:36:14PM -0500, Thomas L Roche wrote: > >> > >>No, I have discovered considerably more. Consequently my question is, > >>is the path_conv bad? > > > >What you are debugging is the consequences of cmalloc being NULL. While > >that may illustrate that cygwin should recover more robustly from such a > >situation, it is not directly related to the problem at hand, namely, > >"Why is cmalloc returning NULL?" > > I noticed that a) Thomas' file names are unusually long and > b) path_conv::set_normalized_path calls cmalloc only for long paths. > > Thus I decided to check if the normalized path is correctly freed. > That would explain why cmalloc is returning NULL. > As far as I can see, it isn't freed, at least not all the time. > When running /bin/ls very_long_path I see 4 allocs and 2 frees. > > However I don't find an obvious bug and I don't have the time to pursue > this for the moment. > > Pierre
If I read the code correctly, normalized_path has to be explicitly freed. One of the places normalized_path is freed is in conv_path_list_buf_size, and the cfree is followed by the following FIXME comment: cfree (pc.normalized_path); // FIXME - probably should be in a destructor but // it's hard to justify a destructor for the few // places where this is needed I believe a destructor would be cleaner, and the current code obviously misses at least one more place where this is needed. Unfortunately, with my copyright assignment in flux, I can't send in a patch. If noone fixes this by the time I can send patches, I'll try to send in a fix for this. Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "I have since come to realize that being between your mentor and his route to the bathroom is a major career booster." -- Patrick Naughton -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/