Do anyone here have the experience with 64bits compiled Samba on SPARC?

Jiri Sasek - Solaris Prague jiri.sasek at oracle.com
Thu Nov 26 05:20:40 UTC 2015


Hi geeks,

I have built 64bits Samba and winbindd is receiving the SIGBUS(*)

...on:

libsmbconf.so.0`talloc_dict_traverse_fn+0xf0:   ldx [%l2], %l3


where l2 is equal to 2b50c7275c as can be seen from stackregs trace:
...
fffffdfa7f4001a1 
libsmbconf.so.0`talloc_dict_traverse_fn+0xf0(fffffdfa7f400be0,
fffffdfa7f401190, fffffdfa7f400bf8, fffffdfa7f400bd8, 1, fffffdfa7f400c20)
   %l0-%l3:    7ffc619014800               44 2b50c7275c               44
   %l4-%l7:       2b50c72718               44 2b50c72718               44
   libdbwrap.so`db_rbt_traverse_internal+0x198:jmpl %l3, %o7
...

and:
> 2b50c7275c,10::dump
               0 1 2 3  4 5 6 7  8 9 a b \/ d e f 0123456789abvdef
2b50c72750:  00000000 00000000 00000000 0000002b ...............+
2b50c72760:  50c73170 000a8750 0000002b 50c72500 P.1p...P...+P.%.

So I suppose the problem is the 0x2b50c7275c address is not the 64bits 
alligned.

I have also localized the problem is (with some [RISC optimized code] 
uncertainty :-) ) in samba-4.1.17/source3/lib/talloc_dict.c 
(talloc_dict_traverse_fn) line:

148	return state->fn(data_blob_const(key.dptr, key.dsize),
149			 *(void **)value.dptr, state->private_data);

3-rd parameter eveluation:

state->private_data  ...dereferencing.

Many thanks for any suggestions,
(lazy ...as Jeremy says :-) ) Jiri



(*) - SIGBUS is an exception generated when data pointer is misaligned 
mainly used on RISC platforms.
  note: Intel can workaround such misalignment by spending several more 
CPU cycles as a cache penalty on instruction execution.



More information about the samba-technical mailing list