Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 795307
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T22:27:33+00:00 2026-05-14T22:27:33+00:00

EDIT: This peace of code is pretty fine (so take it as example of

  • 0

EDIT: This peace of code is pretty fine (so take it as example of semaphores ;). Bug in my program was in another place – found by my friend.

I have problem with my functions. Sometimes two processes enter into critical section. I can’t find problem in this after I spent 10 hours by debugging. On what I should aim? Is there any possibility to have bud in this piece of code?

    // lock semaphore
    static int P(int sem_id)
    {
        struct sembuf sem_b;
        sem_b.sem_num = 0;
        sem_b.sem_op = -1; /* P() */
        sem_b.sem_flg = 0;
        if (semop(sem_id, &sem_b, 1) == -1) {
              // error
                 return(0);
        }
        return(1);
    }

    // unlock semaphore
    static int V(int sem_id)
    {
        struct sembuf sem_b[1];
        sem_b.sem_num = 0;
        sem_b.sem_op = 1; /* V() */
        sem_b.sem_flg = 0;
        if (semop(sem_id, &sem_b, 1) == -1) {
              // error
            return(0);
        }
        return(1);
    }

    static int set_semval(int sem_id)  {
        // set to 1 (opened semaphore)
        if (semctl(sem_id, 0, SETVAL, 1) == -1) {
              // error
            return(0);
        }
        return(1);
    }

    static int get_val(int sem_id)
    {
        union semun sem_union;
        //sem_union.val = 0; ?
        return semctl(sem_id, 0, GETVAL, sem_union);
    }

The action loop:

// semaphores init
int mutex;
if ((mutex=semget(key+2, 1, 0666))>=0) {
    // semaphore exists
    fprintf(stderr,"semaphore exists for key %d\n", key+2);
}

if ((mutex=semget(key+2, 1, 0666 | IPC_CREAT)) == -1) { 
    exit(EXIT_FAILURE);
}
if (!set_semval(mutex)) {
    exit(EXIT_FAILURE);
}
fork()    // some times with good conditionals

// in some children
while(1) {
        P(mutex);   
        assert(get_val(mutex)==0); // always ok
        action();  // sometimes made by two processes at same time - fault
        V(mutex);
}   

Pls, feel free to edit my question.

Many thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T22:27:34+00:00Added an answer on May 14, 2026 at 10:27 pm

    So bug was at another place…

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've found a pretty nasty bug in EF 4.1 Code First. Assume we have
I got a code like this that works just fine. $dates[] = date('F, Y',
I'm breaking my head on this simple peace of code, that doesn't want to
I have this peace of code $doc = new DOMDocument(); $doc->loadHTML($article_header); $imgs = $doc->getElementsByTagName('img');
EDIT: This post was originally specific to ASP.NET, but after thinking about it I'm
Edit This question has gone through a few iterations by now, so feel free
EDIT: This question is a duplicate of What is the difference between managed and
EDIT: This issue is already submitted on Github. Changing the Act part to this
[Edit: This problem applies only to 32-bit systems. If your computer, your OS and
EDIT: This problem has been solved. See below. Hey all. I'm building an iPhone

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.