the sigsegv issue with recent smatch

Toomas Soome <[email protected]> Tue, 25 Nov 2025 18:27:06 +0200
Newsgroups org.kernel.vger.smatch
Message-ID <[email protected]>
I got a bit background for sigsegv case.

The call stack from core:

core 'core' of 28557:   =
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386
 000000000051af5e cast_expression () + 16
 00000000005337b5 fake_return_assignment () + 169
 0000000000535747 db_assign_return_states_callback () + 419
 fffff7ffeeea7009 sqlite3_exec () + 559
 000000000050939f sql_exec () + 1a1
 000000000050eb68 sql_select_return_states () + 15f
 00000000005357f4 db_return_states_assign () + a2
 0000000000535b48 match_assign_call () + 91
 000000000053bc8e pass_expr_to_client () + 1f
 000000000053bdbf __pass_to_client () + c8
 0000000000529a54 parse_assignment () + 187
 0000000000529ede __split_expr () + 2ef
 000000000052c28c __split_stmt () + 335
 000000000052be7e split_if_statement () + 258
 000000000052c2ae __split_stmt () + 357
 000000000052bae7 split_compound () + 13f
 000000000052c29d __split_stmt () + 346
 000000000052be64 split_if_statement () + 23e
 000000000052c2ae __split_stmt () + 357
 000000000052ba72 split_compound () + ca
 000000000052c29d __split_stmt () + 346
 000000000052be64 split_if_statement () + 23e
 000000000052c2ae __split_stmt () + 357
 000000000052bae7 split_compound () + 13f
 000000000052c29d __split_stmt () + 346
 000000000052a8a6 handle_pre_loop () + 230
 000000000052c33f __split_stmt () + 3e8
 000000000052ba72 split_compound () + ca
 000000000052c29d __split_stmt () + 346
 000000000052de3e parse_fn_statements () + 24
 000000000052e264 split_function () + 1c2
 000000000052f08e split_c_file_functions () + 1d2
 000000000052f44a smatch () + 17c
 00000000004970a6 main () + 1f8
 0000000000495827 _start_crt () + 87
 0000000000495788 _start () + 18


now, running smatch with =E2=80=94debug does reveal some extra data:

=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:209 nv_var_overload() set_state new =
[register_returns_early] 'return_ranges' 0-u32max
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 0, -1, =
'209', 'struct mdb_var*(*)(struct mdb_var*, struct mdb_var*)');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 1023, 1, =
'$', '');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 103, 0, =
'$', '4096-ptr_max');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 103, 0, =
'$->v_du.v_ndef->v_du.v_ndef', '0');
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:209 nv_var_overload() set_state new =
[register_param_cleared] '*v' cleared
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 2501, 0, =
'*$', '');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 2525, 0, =
'$->v_du.v_ndef', '0-u32max[$1]');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 1029, =
-1, '$', '=3D=3D $1');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 1028, =
-1, '$', '=3D=3D $1');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert into return_states values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 31, '0-u32max[$1]', 1, 1037, =
-1, '', '4');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert or ignore into return_implies values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 1, 1068, -1, '', '');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert or ignore into return_implies values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 1, 1006, 0, '$', '1');
mem-db: insert or ignore into hash_string values (0xd6338457fe83563, =
'../../../common/mdb/mdb_nv.c');
mem-db: insert or ignore into return_implies values (0xd6338457fe83563, =
'nv_var_overload', 18446735277306630320, 1, 1047, 0, '', '0');
debug: select function, type, parameter, key, value from return_implies =
where call_id =3D '18446735277306630320';
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() select function, =
type, parameter, key, value from return_implies where call_id =3D =
'18446735277306630320';
nv_var_interpos, 1068, -1, ,  nv_var_interpos, 1006, 2, $, 1
nv_var_interpos, 1006, 3, $, 1
nv_var_interpos, 1047, 0, , 0
nv_var_overload, 1068, -1, ,  nv_var_overload, 1006, 0, $, 1
nv_var_overload, 1047, 0, , 0
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_smatch_extra] 'v' 4096-ptr_max =3D> 4096-ptr_max
debug: select function, type, parameter, key, value from return_implies =
where call_id =3D '18446735277306630320';
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() select function, =
type, parameter, key, value from return_implies where call_id =3D =
'18446735277306630320';
nv_var_interpos, 1068, -1, ,  nv_var_interpos, 1006, 2, $, 1
nv_var_interpos, 1006, 3, $, 1
nv_var_interpos, 1047, 0, , 0
nv_var_overload, 1068, -1, ,  nv_var_overload, 1006, 0, $, 1
nv_var_overload, 1047, 0, , 0
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_modification_hooks] 'v' v =3D nv->nv_hash[i] =3D> v =3D =
nv_var_overload(v, w)
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_smatch_extra_links] 'v' v =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_comparison] 'nv->nv_hash[i] vs v' =3D=3D =3D> unknown
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_comparison_links] 'v' nv->nv_hash[i] vs v =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_ssa] 'v->v_du.v_ename' merged =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_ssa] 'v->v_lname' merged =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[check_deref] 'v' ok =3D> ok
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v' true =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 4' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 16' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 4' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions_links] 'v' v, v->v_flags & 4, v->v_flags & =
16, v->v_flags & 4 =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 4' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 16' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions] 'v->v_flags & 4' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions_links] 'v->v_flags' v->v_flags & 4, =
v->v_flags & 16, v->v_flags & 4 =3D> undefined
debug: select distinct return from return_states where call_id =3D =
'18446735277306630320';
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() select distinct =
return from return_states where call_id =3D '18446735277306630320';
4096-ptr_max[$3]
0-u32max[$1]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $1]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() val =3D 1-u32max =
remaining =3D ]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state new =
[register_comparison] 'return fffff7ffed8750b0 vs v' =3D=3D
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state new =
[register_comparison_links] 'return fffff7ffed8750b0' return =
fffff7ffed8750b0 vs v
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_comparison_links] 'v' undefined =3D> return fffff7ffed8750b0 =
vs v
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_ssa] 'v->v_du.v_ename' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_smatch_extra] 'v->v_du.v_ename' 0-u32max =3D> 0-u32max
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state new =
[register_param_bits_set] 'v->v_flags' 0x0 + 0xffffffffffffffff
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_bits] 'v->v_flags' 0x10 + 0xff =3D> 0x0 + 0xffffffffffffffff
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_stored_conditions_links] 'v->v_flags' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_smatch_extra] 'v->v_flags' 16-255 =3D> 0-255
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_ssa] 'v->v_lname' undefined =3D> undefined
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[register_assigned_expr] 'v->v_lname' nv->nv_hash[i]->v_lname =3D> =
nv_var_overload(v, w)->v_lname
debug: select return_id, return, type, parameter, key, value from =
return_states where call_id =3D '18446735277306630320' order by =
return_id, type;
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() select return_id, =
return, type, parameter, key, value from return_states where call_id =3D =
'18446735277306630320' order by return_id, type;
30, 4096-ptr_max[$3], 0, -1, 195, struct mdb_var*(*)(struct mdb_nv*, =
uint, struct mdb_var*, struct mdb_var*)
30, 4096-ptr_max[$3], 103, 3, $, 4096-ptr_max
30, 4096-ptr_max[$3], 103, 3, $, 4096-ptr_max
30, 4096-ptr_max[$3], 103, 3, $, 4096-ptr_max
30, 4096-ptr_max[$3], 1001, -1, $->v_du.v_ndef, 4096-ptr_max
30, 4096-ptr_max[$3], 1004, 2, $, =20
30, 4096-ptr_max[$3], 1023, 2, $, =20
30, 4096-ptr_max[$3], 1023, 3, $, =20
30, 4096-ptr_max[$3], 1028, -1, $, =3D=3D $3
30, 4096-ptr_max[$3], 1029, -1, $, =3D=3D $3
30, 4096-ptr_max[$3], 1037, -1, , 8
30, 4096-ptr_max[$3], 1051, 2, $->v_flags, 0x10
30, 4096-ptr_max[$3], 2525, 2, $->v_next, 0
30, 4096-ptr_max[$3], 2525, 3, $->v_du.v_ndef, 4096-ptr_max[$2]
30, 4096-ptr_max[$3], 2525, 3, $->v_next, 0-u32max
31, 0-u32max[$1], 0, -1, 209, struct mdb_var*(*)(struct mdb_var*, struct =
mdb_var*)
31, 0-u32max[$1], 103, 0, $, 4096-ptr_max
31, 0-u32max[$1], 103, 0, $->v_du.v_ndef->v_du.v_ndef, 0
31, 0-u32max[$1], 1023, 1, $,  31, 0-u32max[$1], 1028, -1, $, =3D=3D $1
31, 0-u32max[$1], 1029, -1, $, =3D=3D $1
31, 0-u32max[$1], 1037, -1, , 4
31, 0-u32max[$1], 2501, 0, *$,  31, 0-u32max[$1], 2525, 0, =
$->v_du.v_ndef, 0-u32max[$1]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state change =
[internal] 'unnull_path' true =3D> true
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() set_state new =
[register_smatch_extra] 'v->v_du.v_ndef' 4096-ptr_max
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
=
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch: ../../../common/mdb/mdb_nv.c:295 mdb_nv_insert() parsing $3]
Segmentation Fault         (core dumped) =
/code/illumos-gate/usr/src/tools/proto/root_i386-nd/opt/onbld/bin/i386/sma=
tch --debug -fident -finline -fno-inline-functions -fno-builtin -fno-asm =
-fdiagnostics-show-option -nodefaultlibs -D__sun -O -m32 -Wall -Wextra =
-Werror -Wno-missing-braces -Wno-sign-compare -Wno-unused-parameter =
-Wno-missing-field-initializers -Wno-array-bounds -p=3Dillumos_user =
--disable=3Duninitialized,check_check_deref -Wno-vla =
-Wno-one-bit-signed-bitfield -Wno-external-function-has-definition =
-Wno-old-style-definition -Wno-strict-prototypes --fatal-checks =
--timeout=3D0 -Wno-maybe-uninitialized -Wno-char-subscripts =
-Wno-clobbered -Wno-parentheses -Wno-unused-variable -std=3Dgnu99 =
-fno-inline-small-functions -fno-inline-functions-called-once =
-fno-ipa-cp -fno-ipa-icf -fno-clone-functions -fno-reorder-functions =
-fno-reorder-blocks-and-partition -fno-aggressive-loop-optimizations =
--param=3Dmax-inline-insns-single=3D450 -fstack-protector-strong -g =
-gdwarf-4 -gstrict-dwarf -std=3Dgnu99 -DTEXT_DOMAIN=3D"SUNW_OST_OSCMD" =
-D_TS_ERRNO -I/code/illumos-gate/proto/root_i386/usr/include -D_MDB -I. =
-I../.. -I../../../common -I../../mdb -c ../../../common/mdb/mdb_nv.c -o =
/tmp/cw.I4aGW3/cwK4a4W3.o
tsoome@balrog:/code/illumos-gate/usr/src/cmd/mdb/intel/ia32/mdb$=20


As I understand, mdb_nv.c:295 is the location of source where smatch =
gets crash, and the lines with =E2=80=98parsing $3=E2=80=99 are about =
processing the sql query some lines above, so that we have processed 10 =
lines from query result, and it seems we do crash on 11th:

30, 4096-ptr_max[$3], 1037, -1, , 8

is it the missing value there which ends up in call stack as NULL =
pointer for expression?

rgds,
toomas