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: Wed, 15 Feb 2006 16:34:00 +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 #5, bug #15757 (project make):

tower% pstack 16636
16636:  /home/normanw/sparc-SunOS-5.8/bin/make --warn-undefined-variables
ever
 0004bea4 target_environment (8b5b90, 2, 1, 0, 2f736800, 85698) + 1b4
 00032704 start_job_command (2bb8ed8, 0, ffffffff, fffffff8, 0, 2bb8e09) +
664
 00032af8 start_waiting_job (2bb8ed8, 0, ffffffff, fffffff8, 0, 2bb8f05) +
c0
 000334c4 new_job  (8b5b90, 0, a, 1, 2bb8ed8, 96a40) + 80c
 00021810 execute_file_commands (8b5b90, 745f0, 21d90, ff33c000, 4, 9e319) +
f0
 00046e7c remake_file (8b5b90, 9, 14, 0, 2f686f73, 0) + f4
 00045914 update_file_1 (8b5b90, 8, 0, 0, 0, 1) + 192c
 00043d10 update_file (8b5b90, 8, 0, 1, 8b5b90, 0) + 118
 00044cf0 update_file_1 (2bba1b8, 0, d2cf8, 2baa640, 0, 1) + d08
 00043d10 update_file (2bba1b8, 7, 1a, 1a, 2bba1b8, 0) + 118
 00046274 check_dep (2bba1b8, 6, 0, 1, ffbfe4a8, ffbfdf30) + cc
 00046878 check_dep (91c8c8, 5, 0, 1, ffbfe548, 0) + 6d0
 00046878 check_dep (71c178, 4, 0, 1, ffbfe5fc, ff0000) + 6d0
 00044958 update_file_1 (71c0f8, 3, 0, ad03e8, 0, 1) + 970
 00043d10 update_file (71c0f8, 3, 26, 26, 71c0f8, 0) + 118
 00046274 check_dep (71c0f8, 2, 0, 1, ffbfe7a8, 6bb2b0) + cc
 00046878 check_dep (11be20, 1, 0, 1, ffbfe85c, ace1b9) + 6d0
 00044958 update_file_1 (94818, 0, a14d28, 21d140, 0, 1) + 970
 00043d10 update_file (94818, 0, ffbfe931, 2, 94818, 0) + 118
 0004361c update_goal_chain (92ab0, 0, d702a0, 0, 0, ace1a0) + 204
 00037b18 main     (4, ffbff6d4, 9aaf0, 95478, 0, 0) + 2b58
 0001f0e8 _start   (0, 0, 0, 0, 0, 0) + 108

(dbx) print *file
*file = {
    (*file).name        = 0xb70ff0
"/bld/tower/normanw_9.1/share/host/gateways/src/.mkdir"
    (*file).hname       = 0xb70ff0
"/bld/tower/normanw_9.1/share/host/gateways/src/.mkdir"
    (*file).vpath       = (nil)
    (*file).deps        = (nil)
    (*file).cmds        = 0x96a40
    command_flags       = 0
    (*file).stem        = 0x2b83e38
"/bld/tower/normanw_9.1/share/host/gateways/src"
    (*file).also_make   = (nil)
    last_mtime          = 1ULL
    mtime_before_update = 0
    (*file).prev        = (nil)
    (*file).renamed     = (nil)
    (*file).variables   = 0x2b83778
    (*file).pat_variables = (nil)
    (*file).parent      = 0x71d450
    (*file).double_colon = (nil)
    update_status       = -1
    command_state       = cs_not_started
    precious            = 0
    low_resolution_time = 0
    tried_implicit      = 1U
    updating            = 0
    updated             = 0
    is_target           = 1U
    cmd_target          = 0
    phony               = 0
    intermediate        = 1U
    secondary           = 0
    dontcare            = 0
    ignore_vpath        = 0
    pat_searched        = 1U
    considered          = 1U
}

(dbx) print *file->variables 
*file->variables = {
    (*file->variables).next = 0x2bb9220
    (*file->variables).set = 0x2b83710
}
(dbx) print *file->variables->next
*file->variables->next = {
    (*file->variables->next).next = 0x85698
    (*file->variables->next).set = 0x2bb8aa0
}
(dbx) print *file->variables->next->next
*file->variables->next->next = {
    (*file->variables->next->next).next = 0x1dbed08
    (*file->variables->next->next).set = 0x8aed8
}
(dbx) print *file->variables->next->next->next
*file->variables->next->next->next = {
    (*file->variables->next->next->next).next = 0x85698
    (*file->variables->next->next->next).set = 0xacd9b8
}
(dbx) print global_setlist
global_setlist = {
    global_setlist.next = 0x1dbed08
    global_setlist.set = 0x8aed8
}
(dbx) print &global_setlist
&global_setlist = 0x85698
(dbx) print current_variable_set_list
current_variable_set_list = 0x85698
(dbx) print *current_variable_set_list
*current_variable_set_list = {
    (*current_variable_set_list).next = 0x1dbed08
    (*current_variable_set_list).set = 0x8aed8
}

The target file is a dummy file used to force directory creation. I have a
pattern rules something like:

%/.mkdir:
  mkdir -p $(@D) && touch $(@)

I use this technique for creating directories absolutely everywhere.

The actual chain of dependencies looks like:

everything:
/bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/CONNECT_ROOT/FSSGateway/src/FSSGateway

/bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/CONNECT_ROOT/FSSGateway/src/FSSGateway:
-lhostgateways

-lhostgateways:
/bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/lib/libhostgateways.so

/bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/host/gateways/src/manifest.o:
host/gateways/src/manifest.cpp

host/gateways/src/manifest.cpp:
/bld/tower/normanw_9.1/share/host/gateways/src/.mkdir

everything is a phony target to build everything in the tree. The -l target
is another phony target which depends on the actual library file. There is a
target specific variable defined on the library basically setting up its
linker options. The library depends on the dot-o files which are platform
specific. There are  pattern specific variables set up to set compilation
options at a source directory level. The manifest.cpp target is a generated
file listing the versions to be built. It's built by a pattern rule looking
something like:

$(shr_root)/%/manifest.cpp: \
  $(shr_root)/%/.mkdir

Where $(shr_root) is the root for shared targets under the build tree (we
build for different architectures with different variants, the shr_root
contains platfrom independent targets).

However, having said all that I don't think this particular combination of
dependencies is special since every source directory has a manifest.cpp file
defined in exactly the same way, and make happily get through building about
half the source before getting stuck. I could try just building the directory
which is causing the problems.

    _______________________________________________________

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]