[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
- Crash in hash_free_items(),
Gisle Vanem <=