RE: segv at strcmp

From: Luck, Tony <tony.luck_at_intel.com>
Date: 2004-01-06 12:14:02
Didn't compile ... "ret" undefined ... so I fixed that, but
then it SEGV'd on the "strcpy" ... it didn't make it to the
strcmp().

-Tony

> -----Original Message-----
> From: umut aymakoglu [mailto:umutaymak@yahoo.com]
> Sent: Monday, January 05, 2004 4:04 PM
> To: Luck, Tony; linux-ia64@vger.kernel.org
> Cc: umuta@us.ibm.com
> Subject: RE: segv at strcmp
> 
> 
> Ok - I have a small repro that segvs.
> 
> 
> 
> #include <stdio.h>
> #include <sys/ipc.h>
> #include <sys/shm.h>
> #include <string.h>
> #include <stdlib.h>
> 
> 
> #define SHMBASE 0x200000000
> #define AL (1024*1024)
> #define MAXSEGMENTS  1
> 
> 
> #ifndef SHM_R
> #define SHM_R        0400
> #endif
> #ifndef SHM_W
> #define SHM_W        0660
> #endif
> 
> #define SHM_MODE     ( SHM_R | SHM_W | IPC_CREAT )
> #define KEY2SUCKS    0x52435200
> 
> unsigned long     sizes[MAXSEGMENTS] ={720896};
> 
> main()
> {
> 
>     int  shmid[MAXSEGMENTS];
>     char *shmptr[MAXSEGMENTS];
>     long addr,mykey,loop,addr_save,attempts=0;
>     int i;
>     char *name;
> 
> 
>     addr = SHMBASE;
>     mykey  = KEY2SUCKS;
>     attempts = 0;
> 
> for( loop=0;loop<MAXSEGMENTS;loop++ )
> {
> 
> shmid[loop]=shmget((key_t)mykey,sizes[loop],SHM_MODE);
>  shmptr[loop]=(char
> *)shmat(shmid[loop],(void*)addr,0);
> 
>  /* ALign the size on SHMLBA(16K) */
> sizes[loop]=(sizes[loop] + SHMLBA - 1) & ~(SHMLBA -1);
> addr=shmptr[attempts]+(unsigned long)sizes[loop];
> addr_save = addr;
>    printf("addr1 = %p\n",addr);
> 
>  /* aLign the Address on 1MB */
> addr=(char *)(((unsigned long)addr + AL-1) & ~(AL-1));
>    
>    printf("addr2 = %p\n",addr);
>    attempts++;
>    mykey++;
> }
> 
>  name = ((unsigned long)addr_save - 16);
>  printf("%p\n",name);
>  strcpy(name, "sqlexec");
>  ret = strcmp(name,"aaaaaaaaaaaaaaaaaaaaaaaa");
> 
> 
>  for( loop=0;loop<attempts;loop++ )
>        shmctl( shmid[loop],IPC_RMID,0 );
> 
>   printf( "\n\tRemoved All Segments ... \n\n");
>   exit( 0 );
> }
> 
> %gcc -O -o x x.c
> %./x
> 
> 
> __________________________________
> Do you Yahoo!?
> New Yahoo! Photos - easier uploading and sharing.
> http://photos.yahoo.com/
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Mon Jan 5 20:17:38 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:21 EST