share_mode_stale_pid: PID 10158134 (index 0 out of 1) does not exist anymore

 ( NevemTeve | 2016. június 1., szerda - 15:57 )

(frissítés az elején)

20160923.1619
És íme: https://www.samba.org/samba/history/samba-4.4.6.html
Igaz, hogy a legvégén, és igaz, hogy a problémának nincs köze a hexás/oktális számokhoz, de benne van a 4.4.6-ban a javítás!

20160101.1557

share_mode_stale_pid: PID 10158134 (index 0 out of 1) does not exist anymore

Szegény processz, nem létezik már. Ami kicsit kellemetlenné teszi a dolgot, az az, hogy az a procesz, ami ezt kiírta, az ez volt:

$ bs2stat 10158134
%PID:      10158134   PPID:  10354856   NOW: 2016-06-01.15:53:32
%USERID:   root       GROUP: system     ELAPSED:           05:41
%STATION:  pts/3      PRI:   60 20      CPU-USED:       00:00:00
%SIZE(KB): 4004       %MEM:  0.0        %CPU:  0.0
%STATE:    A Active                     WCHAN: -
%CWD:      /home/projects/
%CMD:      /usr/local/sbin/smbd -i -d2

Akkor lehet, hogy a szellemvilágból üzent...

Szerk: Ahogy most látni vélem, smbd generált egy véletlenszámot, azt felírt a memóriába is, meg egy fájlba is (/var/run/sambalocks/msg.lock/10879150); most visszaolvasta a fájlt, összenézte a kettőt, és azt látja, hogy:

(gdb) print unique
$4 = 3507454691982726598
(gdb) print/x unique
$5 = 0x30acfb75856855c6

(gdb) print id->unique_id
$6 = 13507454691982726598
(gdb) print/x id->unique_id
$7 = 0xbb741e7a0f5055c6

Ez nekem arra hasonlít, mintha elveszett volna egy számjegy a harcban... folyt köv...

Szerk: számoljuk meg a számjegyeket: 13,507,454,691,982,726,598 -- húsz darab.
Vajon valahol van egy char tmp[20]; ?
A másik kérdéses rész, hogy miért nyitja meg a lockfile-t O_NONBLOCK-ra? Okozhat ez gondot?

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ő.

Van egy olyan komponens, hogy samba-4.4.3/lib/replace/snprintf.c
abban pedig egy

static void fmtint (char *buffer, size_t *currlen, size_t maxlen,
                    LLONG value, int base, int min, int max, int flags)
{
...
        char convert[20];
...
        do {
                convert[place++] =
                        (caps? "0123456789ABCDEF":"0123456789abcdef")
                        [uvalue % (unsigned)base  ];
                uvalue = (uvalue / (unsigned)base );
        } while(uvalue && (place < 20));
        if (place == 20) place--;

Nézzünk egy ilyen számot: 10,836,468,295,797,566,824 (uint64_t)
Mit tesz Isten, pont húsz számjegy, tehát a ciklus után zseniálisan megsemmisíti az utolsónak előállított számjegyet (ami a legmagasabb helyiértéken lévő 1).

Namost ha én esetleg oktális számot akarnék kiratni, akkor 1,131,426,750,007,662,766,550 lenne (vezető 0 nélkül), vagyis 21 számjegy.

Még nézegetem egy kicsit, aztán reportolom.