This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin 2.6.0 Fork issue


Hi ,

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
incorrect assumptions.

Answer: Yes I am trying to find why such exceptions has come.
 are
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

linking varaible

export CC=gcc
export LEX=flex
export CYGWIN=server
export PLATFORM=NT4
export OS_FLAGS="-Wall -DNT4 -DNW_SUPPORT -DNORELISAM -D_KERNEL -DCYG15"
export OS_CIOS=
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


makefile:
CC = gcc
LDFLAGS =
CFLAGS = -I../../intf/c

CFLAGS += -DBTI_WIN ----- this is for pervasive----
LDFLAGS += -L$(PVSW_ROOT)/lib
SYSLIBS=-lcurses $(OS_LIBS)

#EXECS = btrsamp
#OBJS = btrsamp.o

default:
@echo --------------------------------------------------------
@echo  PSQL
@echo  Btrieve samples
@echo
@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.
@echo --------------------------------------------------------

# all: $(EXECS)

all: allbins

allbins:
@echo "Compiling sample..."
@$(CC) $(INCLPATH)  btrapi.c -o btrapi btrsamp.c -o btrsamp $(CFLAGS)
$(LDFLAGS) $(SYSLIBS)

btrsamp:

Sample code:
------------ 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");
            rd_proc_wr_request();
printf("\n I am in child exit \n");  --- Program never reaches here
            exit(0);
}
    /*when the process client finishes Kill the child */

        else
        {
/*We are the parent so free the memory*/
sleep(15);
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");
            exit(0);
        }
------------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(
                B_OPEN,
                posBlock1,
                dataBuf,
                &dataLen,
                keyBuf1,
                keyNum);

    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 <singhal.rashi@gmail.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 <singhal.rashi@gmail.com> wrote:
>> Hi,
>>
>> 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
>>
>> Regards,
>> Rashi

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]