bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Crash in hash_free_items()


From: Gisle Vanem
Subject: Crash in hash_free_items()
Date: Fri, 30 Dec 2022 11:34:56 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

Hello list.

I'm using the very latest GNU-make built on Win-10 by myself.
Except I've disabled the call to 'SetUnhandledExceptionFilter()'.

In one particular Wine Makefile I get a crash in 'hash_free_items()':
  gnumake!hash_free_items+0x22
  gnumake!hash_free+0x30
  gnumake!clear_directory_contents+0x34
  gnumake!find_directory+0xed
  gnumake!dir_file_exists_p+0xd
  gnumake!selective_vpath_search+0x239
  gnumake!vpath_search+0x9d
  gnumake!pattern_search+0x1212
...


This is when creating an .res-file from a .rc-file.
And I use this 'vpath %.rc obj' construct.

I've a hard time creating a minimal example, but running
with max debug (make --debug=verbose), I see this:

    Considering target file 'objects/oleview.res'.
     File 'objects/oleview.res' does not exist.
Directory objects cache invalidated (count 1 != command 42)
Directory . cache invalidated (count 40 != command 42)
      Considering target file 'oleview.rc'.
Directory RCS cache invalidated (count 40 != command 42)
Directory ./objects cache invalidated (count 0 != command 42)

----------

What does 'count 0' means?

So just sensing 'ctr == 0' is important, I did this:

--- a/dir.c 2022-11-27 02:43:12
+++ b/dir.c 2022-12-30 11:18:00
@@ -493,7 +493,7 @@
       DB (DB_VERBOSE, ("Directory %s cache invalidated (count %lu != command 
%lu)\n",
                        name, ctr, command_count));

-      if (dir->contents)
+      if (dir->contents && ctr > 0)
         clear_directory_contents (dir->contents);
     }
   else

---------------


and no more crash in that special Makefile.

--
--gv



reply via email to

[Prev in Thread] Current Thread [Next in Thread]