Re: Racing Condition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 19, 2012 at 11:16 PM, Hei Chan <structurechart@xxxxxxxxx> wrote:
>
> Let's say I have 2 threads trying to call the function below without any synchronization:
>
> void func(int x) {
>     static char buffer[512];
>     sprintf(buffer, "%d\n", x);
>     printf(buffer);
> }
>
> since buffer is static, and so obviously in some cases, there will be 2 threads trying to write to buffer, 1 writing to buffer and another reading from it, or 2 reading from it.
>
> Since it is just an array of char, besides content/stdout might not be what the callers should be expecting; will it cause the program to crash.

This is not a GCC question.  It is a question about C, or about the
threading model used by your OS.

In principle this will be undefined behaviour and anything at all could happen.

In practice the program will probably not crash, though exactly what
it will print is completely unpredictable.  For example, there is no
reason to think that it will only print numbers.

Ian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux