[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