This is the mail archive of the
mailing list for the Cygwin project.
Re: Cygwin 2.6.0 Fork issue
- From: Rashi Singhal <singhal dot rashi at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 6 Jan 2017 08:27:42 +0530
- Subject: Re: Cygwin 2.6.0 Fork issue
- Authentication-results: sourceware.org; auth=none
- References: <CAPCR6Q2xgs5-cPuRXJW+dSDiE-G-7Z_-YA6K=cg8kDdh7f36ZQ@mail.gmail.com> <CAPCR6Q0p4dOqYBxeF4BohZeEq=GjctdbU4wvFxY7=5eUzyPJwQ@mail.gmail.com>
Thanks again for reply.Please find my response.:
You're saying that on this same computer, running Win 2012, this
sample code ran properly under a previous version of Cygwin? Which
version was that?
Answer: We were using pretty old version 1.7.0-58
Which source have you downloaded? Whose source?
Answer: I have downloaded Cygwin 2.26 source
I have doubt ,.Is there any compilation variable or cygwin varaible
set for autoloading all dll's
Not sure why you're asking this.
Answer: As all the other dll's (windows native and actian pervasive)
are not getting loaded automatically with old version of
cygwin(1.7.0-58) so I asked if there any variable which say to
autoload the dll's.
I know old version is very old to compare the things but I am doing
that as I used that as my cygwin version till now.
Your sample program is getting exceptions (i.e., is faulting) even
before it fork()s the child process. The child is faulting the same
way. This looks pretty much like your sample program was built with
Answer: Yes I am trying to find why such exceptions has come.
You can try posting the compilation (and linking) command(s) that you
used to build your btrsamp.exe program. Maybe there's something
obvious there that somebody here can see. We can't help you debug your
program though, and you can't mix Windows-native DLLs that use
Microsoft C runtime with Cygwin code.
Answer: Please find below compilation and linking code
export OS_FLAGS="-Wall -DNT4 -DNW_SUPPORT -DNORELISAM -D_KERNEL -DCYG15"
export OS_LIBS="-L/usr/lib -lkernel32 -lcygwin -lmingw32 -L/usr/lib
-lkernel32 -L/usr/bin -lgcc -L/usr/local/lib -lcompat -lbtr"
export OS_DMS= # OS specific DMS's to be built
export LCFLAGS="$OS_FLAGS" # Lex CFLAGS
export YCFLAGS="$OS_FLAGS" # Yacc CFLAGS
CC = gcc
CFLAGS = -I../../intf/c
CFLAGS += -DBTI_WIN ----- this is for pervasive----
LDFLAGS += -L$(PVSW_ROOT)/lib
#EXECS = btrsamp
#OBJS = btrsamp.o
@echo Btrieve samples
@echo Type \"make all\" to make all executables.
@echo Type \"make clean\" to remove object files.
@echo Type \"make cleanall\" to remove all non-source files.
# all: $(EXECS)
@echo "Compiling sample..."
@$(CC) $(INCLPATH) btrapi.c -o btrapi btrsamp.c -o btrsamp $(CFLAGS)
------------ I have put only fork call code-------
iStat = fork();
printf("\nCreating Clients using fork method iStat is %d...\n",iStat);
if ((iStat) == 0 )
printf("\n I am in child \n");
printf("\n I am in child exit \n"); --- Program never reaches here
/*when the process client finishes Kill the child */
/*We are the parent so free the memory*/
printf("start of Main Process \n");
errWaitPid = waitpid( iStat, &wstatus, WNOHANG | WUNTRACED | WCONTINUED );
printf( "errWaitPid = %d, errno = %d, comment = %s\n", errWaitPid,
errno, strerror( errno ) );
printf ("Parent reads <%s>\n",shm) ;
printf("Exiting Main Process\n");
------------This child process------------
static void* rd_proc_wr_request()
printf("This is child process...\n");
printf("Btrieve before B_OPEN status with BTRV (sample.btr) = %d\n", status);
status = BTRV(
printf("Btrieve B_OPEN status (sample.btr) = %d\n", status); ----
Program never reaches here----
I hope I have put relevant information. Sorry if some extra infos are provided.
On Thu, Jan 5, 2017 at 9:33 AM, Rashi Singhal <email@example.com> wrote:
> Hi ,
> Thanks for information provided.
> I tried putting cygwin/ bin path in first place in environment
> variables. But result remain same.
> Yes all other DLL's getting loaded are either pervasive dll or windows
> native dll.
> I have doubt ,.Is there any compilation variable or cygwin varaible
> set for autoloading all dll's
> As in same windows 2012 system this extra DLL's are not getting loaded
> with previous versions of cywin and Fork is working there.
> I have downloaded the source also, I check some varibel there if you can help.
> Looks like program just hangs child process after open call and never
> comes back.
> Please suggest what I can check .
> On Tue, Jan 3, 2017 at 2:23 PM, Rashi Singhal <firstname.lastname@example.org> wrote:
>> I am using cygwin 2.6.0 (32 bit) version with Actian Pervasive version 12.
>> We have a program which will call fork() and in child process Btrieve
>> file is getting opened.
>> While using latest version of cygwin, file open call is not working ,
>> Its not opening file nor displaying any error.
>> Could you please help me on this .
>> I checked all installation also . Still problem exist
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple