[Vm-dev] Camera sig fault on 64 bits machines.

Eliot Miranda eliot.miranda at gmail.com
Mon Apr 21 20:56:44 UTC 2014


Hi Andreas,


On Sat, Apr 19, 2014 at 2:52 PM, Andreas Wacknitz <a.wacknitz at gmx.de> wrote:

>
> Hi Eliot,
>
> Today I was able to work on this problem again. Alas heartbeat_handler()
> in sqUnixTimerHeartbeat.c is not called automatically as it should be.
> Only if I trigger an external ALRM signal (by means of signal -ALRM <pid>)
> it’s being called. I wasn’t able to find out how the trigger for it is being
> set.
>

Hmmm.  In sqUnixTimerHeartbeat.c::ioInitHeartbeat() there's a sigaction
call that establishes heartbeat_handle as the handler for SIGALRM.  Perhaps
on FreeBSD or OpenSolaris you need to rearm the signal handler on each
delivery?  But perhaps there's a flag you can set in the sigaction that
avoids having to do this.



> The only place I found a nanosleep() call was in block() in sqUnixMain.c.
>

See the nanosleep in sqUnixHeartbeat.c::beatStateMachine.


> BTW what does with ticker and without ticker mean in respect to the
> heartbeat?
>

The Qwaq/Teleplace/Terf VM needs support for sound processing.  The ticker
is the thread or call that provides cycles for sound processing.

But look, if FreeBSD provides pthreads you should try and use
sqUnixHeartbeat.c instead of sqUnixTimerHeartbeat.c.

HTH,
Eliot


> Best regards,
> Andreas
>
> Am 11.04.2014 um 18:02 schrieb Eliot Miranda <eliot.miranda at gmail.com>:
>
> Hi Andreas, Hi Tty,
>
>
> On Fri, Apr 11, 2014 at 7:54 AM, Andreas Wacknitz <a.wacknitz at gmx.de>wrote:
>
>>
>>
>> Am 10.04.2014 um 22:49 schrieb Colin Putney <colin at wiresong.com>:
>>
>>
>>
>>
>> On Thu, Apr 10, 2014 at 3:35 PM, gettimothy <gettimothy at zoho.com> wrote:
>>
>>
>>> I have considered Open Solaris and FreeBSD for my former dos
>>> partition--I don't know if CMake will work on them, but I will investigate.
>>> Do you have a link for open solaris? When I checked a few days ago Oracle
>>> had branded everything and I prefer to not deal with Ellison if I can.
>>>
>>
>> I did some work a while back to build Cog on SmartOS and OpenIndiana. I
>> got it to compile and run, but the image couldn't do IO or respond to UI
>> events. I've found VirtualBox handy for this sort of thing—you can get
>> ready-made images for many operating systems, which saves installing and
>> configuring a bare-metal installation.
>>
>> So you got as far as I did. After some thoughts I guess the heart beat
>> Eliot introduced for Cog might be a possible cause of the problem.
>> When I did my first Solaris compilations of the Squeak VM a couple of
>> years ago I had to adjust the signal handler installation. Solaris needs
>> re-registration after a signal has been caught. I will take a look asap.
>>
>
> Noe that the itemer/signal based heartbeat should be viewed as the
> heartbeat of last resort :-).  It has bad effects when integrating with
> external code, interrupting system calls etc.  Unless this external code is
> written to cope with interrupted calls that can't be restarted such as poll
> or select, the heartbeat needs to be disabled around calls to the external
> code.
>
> Instead, the pthread/nanosleep based heartbeat (in
> platforms/unix/vm/sqUnixHeartbeat.c) is benign but does require multiple
> thread priorities in pthreads so that the heartbeat thread can run at a
> higher priority than the VM thread and hence reliably interrupt it.
>
> --
> best,
> Eliot
>
>
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140421/01d88220/attachment.htm


More information about the Vm-dev mailing list