[openib-general] [ANNOUNCE] New iWARP Branch
Tom Tucker
tom at opengridcomputing.com
Thu Jun 8 15:27:55 PDT 2006
Steve is fishing in the Florida Keys right now (or will be by morning),
but if he were here, I think he would say -- "...sounds like you've
found an rping bug, please post a patch" ;-)
I would prefer the #define you proposed, e.g.
#define RPING_MSG_FMT "rdma-ping-%d"
#define RPING_MIN_BUFSIZ sizeof(itoa(INT_MAX))+sizeof(RPING_MSG_FMT)
Then use the RPING_MSG_FMT symbol in the code that prepares the
contents of the message. then if someone decides to change the string,
the error checking still works.
>
Tom
On Thu, 2006-06-08 at 23:12 +0530, Pradipta Kumar Banerjee wrote:
> Sundeep Narravula wrote:
> > Hi,
> >
> >> I don't see this problem at all. I am using kernel 2.6.16.16, SLES 9 glibc
> >> version 2.3.3-98, gcc version 3.3.3 and AMSO1100 RNIC.
> >
> > The versions I used are glibc 2.3.4, kernel 2.6.16 and gcc 3.4.3 and
> > AMSO1100 RNIC.
> >
> >> Will running it under gdb be of some help ?
> >
> > I am able to reproduce this error with/without gdb. The glibc error
> > disappears with higher number of iterations.
> >
> > (gdb) r -c -vV -C10 -S10 -a 150.111.111.100 -p 9999
>
> The problem is due to specifying a less than sufficient size (-S10, -S4) for the
> buffer. If you look into the following lines from the function rping_test_client
> in rping.c
>
> for (ping = 0; !cb->count || ping < cb->count; ping++) {
> cb->state = RDMA_READ_ADV;
>
> /* Put some ascii text in the buffer. */
> ------> cc = sprintf(cb->start_buf, "rdma-ping-%d: ", ping);
>
> From the above its clear that minimum size for start_buf should be atleast
> sufficient to hold the string, which in the invocations mentioned here (-S10 or
> -S4) is not the case. Hence you notice the glibc errors.
>
>
> cb->start_buf is allocated in rping_setup_buffers() as
> cb->start_buf = malloc(cb->size);
>
> Basically the check
>
> if ((cb->size < 1) ||
> (cb->size > (RPING_BUFSIZE - 1))) {
>
> in the main() should be changed to something like this
>
> #define RPING_MIN_BUFSIZE sizeof(itoa(INT_MAX)) + sizeof("rdma-ping-%d: ")
>
> ---> 'ping' is defined as a signed int, its maximum permissible value is defined
> in limits.h (INT_MAX = 2147483647)
> We can even hardcode the RPING_MIN_BUFSIZE to '19' if desired/
>
> if ((cb->size < RPING_MIN_BUFSIZE) ||
> (cb->size > (RPING_BUFSIZE - 1))) {
>
> Steve what do you say ??
>
>
> Thanks,
> Pradipta Kumar.
>
>
> > Starting program: /usr/local/bin/rping -c -vV -C10 -S10 -a 150.111.111.100
> > -p 9999
> > Reading symbols from shared object read from target memory...done.
> > Loaded system supplied DSO at 0xffffe000
> > [Thread debugging using libthread_db enabled]
> > [New Thread -1208465728 (LWP 23960)]
> > libibverbs: Warning: no userspace device-specific driver found for uverbs1
> > driver search path: /usr/local/lib/infiniband
> > libibverbs: Warning: no userspace device-specific driver found for uverbs0
> > driver search path: /usr/local/lib/infiniband
> > [New Thread -1208468560 (LWP 23963)]
> > [New Thread -1216861264 (LWP 23964)]
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > ping data: rdma-ping
> > cq completion failed status 5
> > DISCONNECT EVENT...
> > *** glibc detected *** free(): invalid next size (fast): 0x0804ea80 ***
> >
> > Program received signal SIGABRT, Aborted.
> > [Switching to Thread -1208465728 (LWP 23960)]
> > 0xffffe410 in __kernel_vsyscall ()
> > (gdb)
> >
> > --Sundeep.
> >
> >> Thanks
> >> Pradipta Kumar.
> >>>> Thanx,
> >>>>
> >>>>
> >>>> Steve.
> >>>>
> >>>>
> >>>> On Mon, 2006-06-05 at 00:43 -0400, Sundeep Narravula wrote:
> >>>>> Hi Steve,
> >>>>> We are trying the new iwarp branch on ammasso adapters. The installation
> >>>>> has gone fine. However, on running rping there is a error during
> >>>>> disconnect phase.
> >>>>>
> >>>>> $ rping -c -vV -C4 -S4 -a 150.10.108.100 -p 9999
> >>>>> libibverbs: Warning: no userspace device-specific driver found for uverbs1
> >>>>> driver search path: /usr/local/lib/infiniband
> >>>>> libibverbs: Warning: no userspace device-specific driver found for uverbs0
> >>>>> driver search path: /usr/local/lib/infiniband
> >>>>> ping data: rdm
> >>>>> ping data: rdm
> >>>>> ping data: rdm
> >>>>> ping data: rdm
> >>>>> cq completion failed status 5
> >>>>> DISCONNECT EVENT...
> >>>>> *** glibc detected *** free(): invalid next size (fast): 0x0804ea80 ***
> >>>>> Aborted
> >>>>>
> >>>>> There are no apparent errors showing up in dmesg. Is this error
> >>>>> currently expected?
> >>>>>
> >>>>> Thanks,
> >>>>> --Sundeep.
> >>>>>
> >
> >
> > _______________________________________________
> > openib-general mailing list
> > openib-general at openib.org
> > http://openib.org/mailman/listinfo/openib-general
> >
> > To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
> >
> >
>
>
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
More information about the general
mailing list