portmaster vs openoffice.org-3 (dmake)

Andriy Gapon avg at icyb.net.ua
Wed May 20 11:59:31 UTC 2009

on 20/05/2009 05:11 Doug Barton said the following:
> portmaster has no knowledge of dmake,

I am certain of this too :-)

> and it doesn't set make variables unless the user specifies them.


> It does set a few enviornment variables, but nothing that should have an effect
>  here. It would help to debug this if you could narrow it down a little.

I think it could be related to one of them because overwritten memory contains
strings that suspiciously resembling port names.
Below are some gdb details.

> Also, are you setting anything interesting in make.conf? Particularly the new 
> make jobs safe stuff?

I haven't changed make.conf for several months, so there is nothing for multiple
jobs stuff and nothing that could affect (in my opinion) portmaster vs "pure" port

Now the details.
#0  Search_table (tab=Variable "tab" is not available.
) at dag.c:195
195           if(    hp->ht_hash == *phkey
(gdb) bt
#0  Search_table (tab=Variable "tab" is not available.
) at dag.c:195
#1  0x0000000000407c38 in Get_name (name=0x80090ea60 "CUR_DEPS", tab=0x51ce00,
define=1) at dag.c:159
#2  0x0000000000407f74 in Def_macro (name=0x80090ea60 "CUR_DEPS",
flags=40) at dag.c:336
#3  0x000000000040e73e in Parse_macro (buffer=Variable "buffer" is not available.
) at macparse.c:122
#4  0x000000000040bb96 in Parse (fil=0x0) at parse.c:158
#5  0x000000000040aec7 in ReadEnvironment () at sysintf.c:472
#6  0x0000000000410838 in Parse_rule_def (state=0x51db08) at rulparse.c:625
#7  0x000000000040bba4 in Parse (fil=0x800860e80) at parse.c:159
#8  0x0000000000409d5e in main (argc=Variable "argc" is not available.
) at dmake.c:388

(gdb) i reg
rax            0xb5     181
rbx            0x35703a657361422d       3850641888803635757
rcx            0xb5     181

(gdb) fr 2
#2  0x0000000000407f74 in Def_macro (name=0x80090ea60 "CUR_DEPS",
flags=40) at dag.c:336
336        hp = Get_name( name, Macs, TRUE );

(gdb) p Macs[181]
$1 = 0x80092e080
(gdb) p *Macs[181]
$2 = {ht_next = 0x80091ef80, ht_link = 0x0, ht_name = 0x80090e570 "SYSTEM_AGG",
ht_value = 0x8009120f4 "NO", ht_hash = 1443329181, ht_flag = 40, var = {mv_mask =
0, val = {mv_svar = 0x0, mv_cvar = 0x0,
      mv_bvar = 0x0, mv_ivar = 0x0, ht = {ht_owner = 0x0, ht_root = 0x0}}}}

(gdb) p Macs[181]->ht_next
$3 = (struct hcell *) 0x80091ef80
(gdb) p *Macs[181]->ht_next
$4 = {ht_next = 0x35703a657361422d, ht_link = 0x61422d747865542d, ht_name =
0x322d6465636e616c <Address 0x322d6465636e616c out of bounds>,
  ht_value = 0x743a315f302e302e <Address 0x743a315f302e302e out of bounds>,
ht_hash = 1886681189, ht_flag = 795045746, var = {mv_mask = 1412248944, val =
{mv_svar = 0x6465636e616c6142,
      mv_cvar = 0x6465636e616c6142 <Address 0x6465636e616c6142 out of bounds>,
mv_bvar = 0x6465636e616c6142, mv_ivar = 0x6465636e616c6142, ht = {ht_owner =
        ht_root = 0x747865542d35703a}}}}

(gdb) x/s Macs[181]->ht_next

(gdb) x/s (char*)Macs[181]->ht_next - 49024

It's the same string, verified by x/50000s.

In any case, it must be a bug in dmake code.

Andriy Gapon

More information about the freebsd-ports mailing list