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.htmlReceived on Mon Jan 5 19:11:10 2004
This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:21 EST