Note that there are some explanatory texts on larger screens.

plurals
  1. POSegmentation fault when writing to shared memory
    primarykey
    data
    text
    <p>Please help check the following code: running it on linux encountered segmentation fault.</p> <pre><code>#deinf QID 2012 typedef struct { pid_t pid; pthread_t tid; char msg; } MSG; typedef struct { int q_head; int q_rear; MSG msgbuf[16*1024]; } QUE; int attach_que(int que_name, int *shmid, void *shm_ptr) { *shmid = shmget((key_t)que_name, sizeof(QUE), 0666 | IPC_CREAT); if (*shmid == -1) { printf("%d:%d failed to get shared memory.\n", getpid(),que_name); return -1; } printf("%d:is attaching to share memory %d.\n", getpid(), *shmid); shm_ptr = shmat(*shmid, (void *)0, 0); if (shm_ptr == (void *)-1) { printf("%d:%d failed to attch to shmget.\n", getpid(),que_name); return -1; } printf("%d: attched to share memory %d.\n", getpid(),*shmid); return -1; } int main() { void *shm_ptr = NULL; TDM_QUE *tdm_que_ptr; DMINT shmid; pid_t pid; pid = getpid(); printf("L-SIMCO %d:is starting.\n", pid); attach_tdm_que(Q_LSIMCO, &amp;shmid, shm_ptr); printf("LSMICO %d:shared memory 0x%x as Q_%d.\n", pid, shm_ptr, Q_LSIMCO); tdm_que_ptr = (TDM_QUE *)shm_ptr; tdm_que_ptr-&gt;q_head = 0; tdm_que_ptr-&gt;q_rear = 0; /* if this is not first time when creating shared memory, do not init data */ if (tdm_que_ptr-&gt;is_creat != 777777) { printf("%d: Init shared memory 0x%x by LSIMCO %d.\n", pid, shm_ptr, Q_LSIMCO); /* init data for shared memory */ tdm_que_ptr-&gt;is_creat = 777777; } printf("%d is reading shared memory 0x%x.\n",pid,shm_ptr); ... } ========================= Running result is following: -bash-3.2$ ./lsimco 6341:is starting. QUE is size of 4620 6341:is attaching to share memory 0. 6341: attched to share memory 0. 6341:shared memory 0x0 as Q_2012. Segmentation fault </code></pre> <p>thanks.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload