registry a sambában?

 ( NevemTeve | 2016. április 20., szerda - 19:17 )

Ezt én csodálatosan jó dolognak tartom, támogatom és helyeslem; egyetlen apróságot szeretnék csak ezzel kapcsolatban megemlíteni: azt, hogy én nem kérek belőle. Namostan természetesen nem indult el az új Samba a gépemen, ez nyilvánvalóan így is van rendjén, de a /var/log/warning.log-beli üzenetek kicsit nyugtalanítóak:

Apr 20 18:30:45 host daemon:err|error smbd[6881382]: [2016/04/20 18:30:45.657482,  0] ../lib/util/util.c:220(directory_create_or_exist) 
Apr 20 18:30:45 host daemon:err|error smbd[6881382]:   mkdir failed on directory : No such file or directory 
Apr 20 18:30:45 host daemon:err|error smbd[6881382]: [2016/04/20 18:30:45.657914,  0] ../source3/registry/reg_init_basic.c:36(registry_init_common) 
Apr 20 18:30:45 host daemon:err|error smbd[6881382]:   Failed to initialize the registry: WERR_NOMEM 
Apr 20 18:30:45 host daemon:err|error smbd[6881382]: [2016/04/20 18:30:45.658101,  0] ../lib/util/become_daemon.c:111(exit_daemon) 
Apr 20 18:30:45 host daemon:err|error smbd[6881382]:   STATUS=daemon failed to start: Samba cannot init registry, error code 13 

Most éjszakára itthagytam '-g' -vel fordulni, aztán holnap rácsodálkozom...

20160428.0749.Szerk: Elnézést kérek a registry-től, a gond igazából az volt, hogy az egyik shared lib (a hetven-valahányból!) kétszer töltődött be -- az egyik a source-tree-ből, a másik a végső (installált) helyről. Ez persze csak a duplikált adatszegmens miatt gond: az egyikbe bekerült az az infó, amit a másikból nem lehetett kiolvasni.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Félve merem megjegyezni, hogy a Samba 3.0 óta benne van, a 3.2 óta konfig adatbázisként is szolgálhat, 3.6 óta meg pl. a nyomtatással kapcsolatos infókat átpakolták abba (a kliensek ott keresik) :)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Note to self: az 'lp_state_directory'-t kellene vizsgálni, hívó: source3/lib/util_path:state_path

Itt a lp_state_directory teljesforráskódja:

182     FN_GLOBAL_CONST_STRING(state_directory, state_directory)

És még ezt is egy python-script generálta, szóval a program-ír-programot esetével állunk szemben...

Kieg: És jó esélye van, hogy az alábbiaknak is köze van az ügyhöz:

ld: 0711-224 WARNING: Duplicate symbol: __rtld
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DI
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DD
ld: 0711-224 WARNING: Duplicate symbol: global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: .__init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: .global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __init_aix_libgcc_cxa_atexit

Eddig ilyeneket főleg C++-tól láttam, de a haladás nem áll meg...

Jóbarátunk, a collect2 állítja ezeket elő; ha nem akarjuk, hogy eltüntesse a nyomokat maga után: -Wl,-debug

A -Wl,-bexpall miatt lett belőlük exportált (avagy publikus) szimbóleum; kiszedtem, helyette rendes export-fájlokat generál a libtool.

Breakpoint 2, lp_state_directory () at default/lib/param/param_functions.c:182
182	FN_GLOBAL_CONST_STRING(state_directory, state_directory)

Állítólag ez lesz a makró kifejtve:

const char *lp_state_directory(void) {
    return(*(const char * const *)(&Globals.state_directory) ?.
           *(const char * const *)(&Globals.state_directory) : "");
}

Szóval mi is az a Globals.state_directory?
linux:

(gdb) p Globals->state_directory 
$3 = 0x55555576ee50 "/var/lib/samba"
(gdb) p &Globals
$4 = (struct loadparm_global *) 0x7ffff5169840 
(gdb) info symbol &Globals
Globals in section .bss of /local/usr/local/src/samba-4.4.2/bin/shared/libsmbconf.so.0

Aix:

(gdb) p Globals->state_directory
$2 = 0x0
(gdb) p &Globals
$3 = (struct loadparm_global *) 0x9001000a0f487a8 <_loadparm.bss_+24>
(gdb) info symbol &Globals
_loadparm.bss_ + 24 in section .bss of /usr/local/lib64/libsmbconf.so.0

Ilyesmi töltené:

#0  lpcfg_string_set (mem_ctx=0x55555576e120, dest=0x7ffff5169b50 , src=0x7ffff4f552a3 "")
    at ../lib/param/loadparm.c:579
#1  0x00007ffff4f321ac in init_globals (lp_ctx=0x55555576e030, reinit_globals=true)
    at ../source3/param/loadparm.c:529
#2  0x00007ffff4f41142 in lp_load_ex (pszFname=0x7ffff79b311d "/usr/local/etc/samba/smb.conf", 
    global_only=true, save_defaults=true, add_ipc=false, reinit_globals=true, 
    allow_include_registry=false, load_all_shares=false) at ../source3/param/loadparm.c:3750
#3  0x00007ffff4f41699 in lp_load_initial_only (pszFname=0x7ffff79b311d "/usr/local/etc/samba/smb.conf")
    at ../source3/param/loadparm.c:3899
#4  0x00005555555611ea in main (argc=5, argv=0x7fffffffe2c8) at ../source3/smbd/server.c:1384