bug-make
[Top][All Lists]
Advanced

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

[bug #15757] circular variable_set_list causes hang on SunOS


From: Ab Wilson
Subject: [bug #15757] circular variable_set_list causes hang on SunOS
Date: Thu, 16 Feb 2006 17:44:26 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.12) Gecko/20050921 Red Hat/1.0.7-1.4.1 Firefox/1.0.7

Follow-up Comment #14, bug #15757 (project make):

So this is what's goig on:

merge_variable_set_lists is being called with two non-disjoint lists with the
second list longer than the first. The last part of the function where the
tail of list1 is appended to list0 results in a circular list.

In this particular instance (*setlist0)->next points to global_setlist,
setlist1->next->next->next also points to global_setlist. This is the
situation before merge_variable_set_lists is called:


(dbx) where
  [1] _kill(0x0, 0x6, 0xffbfe0f8, 0x0, 0x0, 0x0), at 0xff31ffb0 
  [2] abort(0x4b, 0xffbfe188, 0x4b, 0x7efefeff, 0x81010100, 0xff00), at
0xff2b6ce0 
  [3] __assert(0x73c7c, 0x73c9c, 0x2f7, 0x0, 0x6b007261, 0x6b007261), at
0xff2b6f80 
=>[4] merge_variable_set_lists(setlist0 = 0xf2ea8, setlist1 = 0x3cfbf98),
line 759 in "variable.c"
  [5] rehash_file(from_file = 0xb71e98, to_hname = 0x3d0c728
"/view/normanw_9.1/vobs/CONNECT_ROOT/bin/rules.mk"), line 294 in "file.c"
  [6] f_mtime(file = 0xb71e98, search = 1), line 1245 in "remake.c"
  [7] check_dep(file = 0xb71e98, depth = 3U, this_mtime = 1ULL, must_make_ptr
= 0xffbfe668), line 969 in "remake.c"
  [8] check_dep(file = 0xd7ff0, depth = 2U, this_mtime = 1ULL, must_make_ptr
= 0xffbfe71c), line 1008 in "remake.c"
  [9] update_file_1(file = 0x970d8, depth = 1U), line 505 in "remake.c"
  [10] update_file(file = 0x970d8, depth = 0), line 307 in "remake.c"
  [11] update_goal_chain(goals = 0x1edc00), line 156 in "remake.c"
  [12] main(argc = 5, argv = 0xffbff594, envp = 0xffbff5ac), line 2203 in
"main.c"

(dbx) print &global_setlist
&global_setlist = 0x870e4

(dbx) print **setlist0
**setlist0 = {
    (**setlist0).next = 0x870e4
    (**setlist0).set = 0x2ac8b40
}

(dbx) print *setlist1->next->next
*setlist1->next->next = {
    (*setlist1->next->next).next = 0x870e4
    (*setlist1->next->next).set = 0x2be45c8
}

I'm currently investigating rehash_file to try and find the root cause.


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15757>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/





reply via email to

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