[chuck-users] Anyone else running ChucK dual-core in 64-bitmode?

Robin Davies robin.davies at quest.com
Wed May 2 13:48:06 EDT 2007

> #define OBJ_MEMBER_UINT(obj,offset)     (*(t_CKUINT
> ...
> 	#define t_CKUINT                    t_CKDWORD
> ...
> 	#define t_CKDWORD                   unsigned long
> There's also this:
> 	#define OBJ_MEMBER_DATA(obj,offset)     (obj->data + offset)

Speaking as a professional C++ programmer.... 

1) In defense of Ge, few of us get the opportunity to work on code that
doesn't have legacy. Even when we do, few of us manage to produce code
that ages well, in retrospect.

2) 32 to 64 bit ports are non-trivial. 

3) The analysis given is incorrect. The code in question is fine, as
long as none of your classes exceed 16GB in size. Whatever the problem
is, it's not in the cited code.

4) Although C++ inline functions are preferrable to macros, sylistically
speaking, the functionally equivalent C++ inline functions are not, in
fact, any safer than the macros in this case. In this particular case, I
believe your friend is right. The code in question would not be
rewritten because there's not actually a compelling improvement that can
be made at this point.


Robin Davies
Lead Software Developer
Quest Web Reports
Quest Software


Identity Management for the Windows Enterprise: See how Quest helps you
leverage your existing investment to solve the identity management


-----Original Message-----
From: chuck-users-bounces at lists.cs.princeton.edu
[mailto:chuck-users-bounces at lists.cs.princeton.edu] On Behalf Of Ken
Sent: Saturday, April 28, 2007 1:56 PM
To: ChucK Users Mailing List
Subject: Re: [chuck-users] Anyone else running ChucK dual-core in

Hash: SHA1

On Fri, Apr 27, 2007 at 11:09:50AM -0700, Ken Restivo wrote:
> On Fri, Apr 27, 2007 at 06:00:10PM +0200, Michel Koppelaar wrote:
> > Hi,
> > 
> > I seem to be having the same problem. I've been trying to get ChucK
to run on AMD64/Linux these last few days. Tried alsa, oss and jack
build options: segfaults in each case. More details:
> > 
> > Hopefully this can be sorted out. I'm really interested in trying
out ChucK.
> > 
> Hmm, I dug around a bit, not really knowing what I'm doing, but I
suspect that the culprit is probably an assumption about the size of
UINTS...  a 32-bit vs 64-bit issue. My eye was drawn to that
OBJ_MEMBER_UINT() macro, and I took a shimmering journey into the
through-the-looking-glass world of defines on top of defines on top of
> 	#define OBJ_MEMBER_UINT(obj,offset)     (*(t_CKUINT
> ...
> 	#define t_CKUINT                    t_CKDWORD
> ...
> 	#define t_CKDWORD                   unsigned long
> There's also this:
> 	#define OBJ_MEMBER_DATA(obj,offset)     (obj->data + offset)
> So, if offset just happens to be a 32-bit value, that smells to me
like a likely source of a segfault. Offset probably needs to be a long
long, doesn't it? 

I asked a friend who does a lot of C++ work to take a brief look at

He shook his head sadly at the use of macros instead of inline
functions, the use of casts to obliterate type safety, of #define's
instead of typedefs, and the obscuring of the likelihood that ->data is
a struct. He said, basically, this is C, not C++, regardless of what the
file extension says. I poked around some more and it looks like a lot of
the Ugen code was lifted from another, older project-- maybe that was C

He also didn't hold out much hope that any of its developers would show
any interest in fixing this stuff either. The OBJ_MEMBER_UINT's are all
over the filter, osc, xxx(?!), and stk ugens, as well as the Std lib.
The obj->data stuff is in chuck_instr.cpp but nowhere else. But it's
hard to tell how much stuff like this is lurking elsewhere in the code.

I'd be willing to do the gruntwork of search-and-replacing code, if
someone who knows what they're doing wants to tell me pretty much
exactly what to do. If nobody jumps up to do that over the next day or
two, it'd probably be a better use of time to start learning CSound
instead, and maybe have another look at ChucK in a few years if anyone
gets it 64-bit safe by then.

- -ken
Version: GnuPG v1.4.1 (GNU/Linux)

chuck-users mailing list
chuck-users at lists.cs.princeton.edu

More information about the chuck-users mailing list