Application not working in multi core platform

Hi,
I have a multiprocess C application (used POSIX library for threads and fork() & exec for creating process) of millions of LOC.

  1. Which works fine in single processor machine.
  2. Which works fine in multicore machine only if one core is enabled.

Problem is, which results an undefined behavior if more than one core/processor exists. Please suggest where/which area (APIs) may have issue?

Thank you

You say you have a multi-process application and you say you are using the POSIX threads library. These are two very different things, but you have the same issue either way. You have multiple threads (or processes) updating data that has not been properly protected against simultaneous access. If you have a multi-process application, the shared data could be in a file or could be in a shared memory segment. If you have a multi-threaded single process application, the shared data could be in a file, a shared memory segment, or any non-thread-local storage in the process. It could be caused by using an api like read() into a global buffer. It could caused by a statement like a++; for some variable shared by more than one thread/process. It could be thousands of other things in you millions of LOC.

If you can figure out what data is being screwed up on a multi-processor system, start by looking at everything that references that data.

Good luck...

It would also help if you would describe the problems you have in a multi-core environment.

What could be causing the problem? Anything and everything, unfortunately. It all depends on how your application code is written.

Do you know what "reentrant" means? If not, you shouldn't be writing multithreaded code.

Although I would like to know how much use your application makes of static variables.