[SR-Dev] Config framework error for tm module
Miklos Tirpak
miklos at iptel.org
Mon May 25 10:27:03 CEST 2009
Hi,
thanks a lot Andrei!
Nils, you can easily verify that the offsets work with setting the value
of unix_tx_timeout over RPC and verifying it directly with gdb:
sercmd cfg.set_now_int tm unix_tx_timeout 600
(gdb) p ((struct cfg_group_tm *)tm_cfg)->tm_unix_tx_timeout
$3 = 600
(I have attached to the ctl process because it refreshes its
configuration after the sercmd command. Otherwise you need to send a SIP
message to let the listeners update their config pointers.)
Thanks,
Miklos
On 05/22/2009 01:15 PM, Andrei Pelinescu-Onciul wrote:
> On May 21, 2009 at 18:20, Miklos Tirpak <miklos at iptel.org> wrote:
>> Hi,
>>
>> this is strange because the cfg framework says that the offset between
>> cfg_group_tm.tm_auto_inv_100_r and cfg_group_tm.tm_unix_tx_timeout is 4,
>> but I think sizeof(char *) should be 8 on 64bits, so the offset should
>> be at least 8. (cfg.c:81)
>
> Yes, it should be 8.
>> Andrei, do you have any hint?
>
> I've looked at it on a 64 bits system and I found a problem: the sanity
> check compares the computed size directly with sizeof(struct). However
> the structure will be padded if its size is not a multiple of the size
> of the type of its member requiring the highest alignment.
> In our case the extra char* member on 64 bits caused a 4 bytes padding
> and the sanity check failed.
> I've already commited the fix to the repository.
>
> Nils gbd output looks very strange, but hopefully we won't need to
> investigate further.
>
> Andrei
>
> [...]
More information about the sr-dev
mailing list