Based on patch sent me by Ralph Boehme : https://lists.samba.org/archive/samba-technical/2015-November/110889.html ...patch is assumed to be released in community. --- a/source3/lib/talloc_dict.c 2013-06-13 02:21:02.000000000 -0700 +++ b/source3/lib/talloc_dict.c 2015-11-27 15:11:39.212179014 -0800 @@ -72,7 +72,11 @@ TALLOC_FREE(rec); return false; } +#if defined(__SUNPRO_C) && (defined(__sparcv9) && defined(_LP64)) + memcpy(&old_data, value.dptr, sizeof(old_data)); +#else /* Do not chase memcpy on archs where unaligned address do not throw SIGBUS */ old_data = *(void **)(value.dptr); +#endif TALLOC_FREE(old_data); if (data == NULL) { status = dbwrap_record_delete(rec); @@ -138,6 +142,7 @@ TDB_DATA value; struct talloc_dict_traverse_state *state = (struct talloc_dict_traverse_state *)private_data; + void *p; key = dbwrap_record_get_key(rec); value = dbwrap_record_get_value(rec); @@ -145,8 +150,14 @@ if (value.dsize != sizeof(void *)) { return -1; } + +#if defined(__SUNPRO_C) && (defined(__sparcv9) && defined(_LP64)) + memcpy(&p, value.dptr, sizeof(p)); +#else /* Do not chase memcpy on archs where unaligned address do not throw SIGBUS */ + p = *(void **)(value.dptr); +#endif return state->fn(data_blob_const(key.dptr, key.dsize), - *(void **)value.dptr, state->private_data); + p, state->private_data); } /*