Thread: bug: erroronous ret-value for system() call in 2.6-kernel

bug: erroronous ret-value for system() call in 2.6-kernel

From
"Niklas Andersson"
Date:
Hi!

 Had a curious problem with postgresql 7.0.3. Could create a DB if I run
kernel 2.4 but not in 2.6. Had a look in
/src/backend/commands/dbcommands.c and finaly found out that you use an
errorounous ret value from the system()-call. You checked for: if
(system(buf) != 0)

.. I changed those lines to if (system(buf) != -1 ) and it worked. (Thanks
to "man 3 system"

regards
Niklas Andersson

Re: bug: erroronous ret-value for system() call in 2.6-kernel

From
Tom Lane
Date:
"Niklas Andersson" <niklas.andersson@cport.se> writes:
>  Had a curious problem with postgresql 7.0.3.

7.0.3?  You do realize that that's prehistoric?

> Could create a DB if I run
> kernel 2.4 but not in 2.6. Had a look in
> /src/backend/commands/dbcommands.c and finaly found out that you use an
> errorounous ret value from the system()-call. You checked for: if
> (system(buf) != 0)

> .. I changed those lines to if (system(buf) != -1 ) and it worked. (Thanks
> to "man 3 system"

I don't believe this change is correct; what you did was to disable
detection of failures of the child process, ie, cp returning a nonzero
exit status.

            regards, tom lane