Token problem???
Jochen Saile
saile at sfs.nphil.uni-tuebingen.de
Wed Aug 9 17:12:31 CEST 2000
Moin,
i just did a few experiments with gdb and vos examine. It seems that none of the
functions in rxk_locl.c or rxk_serv.c are called, so i traced it to the function
call where the error happend:
The first trace is with tokens.....
vos: exa home.sailej
Breakpoint 3, VL_GetEntryByNameN (connection=0x810a1e0,
volumename=0x80bc384 "home.sailej", entry=0x80471d0) at vldb.cs.c:1433
1433 int ret = 0;
(gdb) n
1434 call = rx_NewCall (connection);
(gdb)
1436 u = htonl (519);
(gdb)
1437 if(rx_Write(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1441 char zero[4] = {0, 0, 0, 0};
(gdb)
1443 len = strlen(volumename);
(gdb)
1444 padlen = (4 - (len % 4)) % 4;
(gdb)
1446 u = htonl (len);
(gdb)
1447 if(rx_Write(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1450 if(rx_Write(call, volumename, len) != len)
(gdb)
1452 if(rx_Write(call, zero, padlen) != padlen)
(gdb)
1457 for(i0 = 0; i0 < 65;++i0){
(gdb)
1459 if(rx_Read(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1460 goto fail;
(gdb)
1567 ret = conv_to_arla_errno(rx_Error(call));
(gdb)
1568 rx_EndCall (call, 0);
(gdb)
1569 return ret;
(gdb)
1570 }
(gdb) c
Continuing.
VL_GetEntryByName(home.saile) failed: rxkad - Seal inconsistency.
vos:
When i step into rx_Read() it seems that roxane gets no response from the
remote machine.
rx_ReadProc (call=0x8109998, vbuf=0x8046fa0, nbytes=4) at rx_rdwr.c:45
45 char *buf = (char *)vbuf;
(gdb) n
49 requestCount = nbytes;
(gdb)
55 while (nbytes) {
(gdb)
56 if (call->nLeft == 0) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
60 if (call->error) {
(gdb)
66 if (call->mode == RX_MODE_SENDING) {
(gdb)
67 rx_FlushWrite(call);
(gdb)
68 continue;
(gdb)
58 for (;;) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
71 if (queue_IsNotEmpty(&call->rq)) {
(gdb)
154 if (call->flags & RX_CALL_RECEIVE_DONE) {
(gdb)
161 call->flags |= RX_CALL_READER_WAIT;
(gdb)
162 clock_NewTime();
(gdb)
163 call->startWait = clock_Sec();
(gdb)
171 osi_rxSleep(&call->rq);
(gdb)
176 call->startWait = 0;
(gdb)
58 for (;;) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
60 if (call->error) {
(gdb)
64 return 0;
(gdb)
.
.
kdestroy tickets and restart gdb
vos: exa home.sailej
Breakpoint 1, VL_GetEntryByNameN (connection=0x81099f0,
volumename=0x80ad054 "home.sailej", entry=0x80471d0) at vldb.cs.c:1433
1433 int ret = 0;
(gdb) n
1434 call = rx_NewCall (connection);
(gdb)
1436 u = htonl (519);
(gdb)
1437 if(rx_Write(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1441 char zero[4] = {0, 0, 0, 0};
(gdb)
1443 len = strlen(volumename);
(gdb)
1444 padlen = (4 - (len % 4)) % 4;
(gdb)
1446 u = htonl (len);
(gdb)
1447 if(rx_Write(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1450 if(rx_Write(call, volumename, len) != len)
(gdb)
1452 if(rx_Write(call, zero, padlen) != padlen)
(gdb)
1457 for(i0 = 0; i0 < 65;++i0){
(gdb)
1459 if(rx_Read(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1461 (*entry).name[i0] = ntohl (u);
(gdb)
1462 }
(gdb)
1459 if(rx_Read(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1461 (*entry).name[i0] = ntohl (u);
(gdb)
1462 }
(gdb)
1459 if(rx_Read(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1461 (*entry).name[i0] = ntohl (u);
(gdb)
1462 }
(gdb)
1459 if(rx_Read(call, &u, sizeof(u)) != sizeof(u))
(gdb)
1461 (*entry).name[i0] = ntohl (u);
(gdb)
1462 }
(gdb) c
Continuing.
home.sailej 1937022657 RW 17 K On-line
roubaix.Informatik.Uni-Tuebingen.De /vicepc
RWrite 1937022657 Backup 1937022659
MaxQuota 100000 K
Creation Wed Jul 26 11:55:15 2000
Last Update Wed Aug 9 12:53:48 2000
99 accesses in the past day (i.e., vnode references)
RWrite: 1937022657 ROnly: 0 Backup: 1937022659
number of sites -> 1
server roubaix.Informatik.Uni-Tuebingen.De partition /vicepc RW Site
vos:
Without a ticket the rx_Read call is successful.....
And again the trace from rx_Read()...
rx_ReadProc (call=0x8109ea8, vbuf=0x8046fa0, nbytes=4) at rx_rdwr.c:45
45 char *buf = (char *)vbuf;
(gdb) n
49 requestCount = nbytes;
(gdb)
55 while (nbytes) {
(gdb)
56 if (call->nLeft == 0) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
60 if (call->error) {
(gdb)
66 if (call->mode == RX_MODE_SENDING) {
(gdb)
67 rx_FlushWrite(call);
(gdb)
68 continue;
(gdb)
58 for (;;) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
71 if (queue_IsNotEmpty(&call->rq)) {
(gdb)
154 if (call->flags & RX_CALL_RECEIVE_DONE) {
(gdb)
161 call->flags |= RX_CALL_READER_WAIT;
(gdb)
162 clock_NewTime();
(gdb)
163 call->startWait = clock_Sec();
(gdb)
171 osi_rxSleep(&call->rq);
(gdb)
176 call->startWait = 0;
(gdb)
58 for (;;) {
(gdb)
59 if (call->error || (call->mode != RX_MODE_RECEIVING)) {
(gdb)
71 if (queue_IsNotEmpty(&call->rq)) {
(gdb)
73 rp = queue_First(&call->rq, rx_packet);
(gdb)
74 if (rp->header.seq == call->rnext) {
(gdb)
76 struct rx_connection *conn = call->conn;
(gdb)
78 queue_Remove(rp);
(gdb)
86 if ((error =
RXS_CheckPacket(conn->securityObject,
(gdb)
103 call->rnext++;
(gdb)
104 call->currentPacket = rp;
(gdb)
105 call->curvec = 1; /* 0th vec is always
header */
(gdb)
111 call->curpos = call->conn->securityHeaderSize;
(gdb)
123 call->nLeft = rp->length;
(gdb)
124 if (rp->header.flags & RX_LAST_PACKET)
(gdb)
125 call->flags |= RX_CALL_RECEIVE_DONE;
(gdb)
139 if (call->rnext > (call->lastAcked + (rx_Window
>> 1)))
(gdb)
147 break;
(gdb)
178 } else { /* assert(call->currentPacket);
*/
(gdb)
243 } /* while (nbytes) ... */
(gdb)
55 while (nbytes) {
(gdb)
56 if (call->nLeft == 0) {
(gdb)
196 while (nbytes && call->currentPacket) {
(gdb)
197 p1 =
(char*)call->currentPacket->wirevec[call->curvec].iov_base +
(gdb)
199 l1 = call->currentPacket->wirevec[call->curvec].iov_len
-
(gdb)
202 t = MIN(l1, nbytes);
(gdb)
203 t = MIN(t, call->nLeft);
(gdb)
204 memcpy(buf, p1, t);
(gdb)
205 p1 += t;
(gdb)
206 buf += t;
(gdb)
207 l1 -= t;
(gdb)
208 nbytes -= t;
(gdb)
209 call->curpos += t;
(gdb)
210 call->nLeft -= t;
(gdb)
212 if (call->nLeft == 0) {
(gdb)
233 }
(gdb)
196 while (nbytes && call->currentPacket) {
(gdb)
234 if (nbytes == 0) {
(gdb)
239 return requestCount;
(gdb)
249 }
(gdb)
VL_GetEntryByNameN (connection=0x8109ad8, volumename=0x80ad06c "home.sailej",
entry=0x80471d0) at vldb.cs.c:1461
1461 (*entry).name[i0] = ntohl (u);
(gdb)
I'm not sure if this is of any help.
Ciao
Jochen
More information about the Arla-drinkers
mailing list