Subject: Re: bug#64039: C-procedure runs when called from C-code, but hags when called from Guile

From: Mike Gran <[email-masked]>
Date: Tue, 13 Jun 2023 13:34:51 +0000 (UTC)

Hello-

I don't see the problem with the shutter.

But the GetStatus lines should be more like what is below. Your current code
only checks status once.

do {
  GetStatus(&status);
} while (status== DRV_ACQUIRING);

On Tuesday, June 13, 2023 at 04:29:46 AM PDT, Михаил Бахтерев <[email-masked]> wrote: 

Greetings.

1. The version

$ guile --version
guile (GNU Guile) 3.0.9

2. The machine

$ uname -a
Linux bioscope 6.3.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 10 Jun 2023 00:35:35 +0000 x86_64 GNU/Linux

3. The package

$ pacman -Qi guile
Version         : 3.0.9-1
Architecture    : x86_64
Depends On      : gmp  ncurses  libunistring  gc  libffi  libxcrypt

4. The problem

I'm working on application for scientific computer vision. We use one of the Andor camera. I've decided to code configuration and user interface parts in Guile Scheme, as to my experience, it is a lot simpler. But i've encountered strange error.

Attached archive contains three source files. cam.c implements simple sequence of interactions with camera driver. That sequence should result in image acquisition and in the clicking of camera shutter. I've built shared library from this code (see makefile, please) and have linked it with simple main program (test.c). When i run resulting binary, i get

$ ./test 
INITIALIZATION
CONFIGURATION
ACQUISITION
-- shutter clicks here
AWAITING
SHUTTING DOWN

When i try to run this code from Guile Scheme, as extension, it hangs.

$ guile test.scm 
defining single-shot
INITIALIZATION
CONFIGURATION
ACQUISITION
AWAITING
-- no shutter clicking
^C

I do not understand how to debug further, so i just include straces of both runs in attached archive. If anyone will give me some directions for investigation of the problem, i'll try to do my best. Thanks in advance!

- Respectfully, Mike.