Bug #4630
PROCDEBUG to non-zero values causes segmentation faults in check_env in trunk
| Status: | Assigned | Start date: | 04/29/2011 | |
|---|---|---|---|---|
| Priority: | Low | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | core | |||
| Target version: | 2.0.0 | |||
| ruby -v: | - |
Description
PROCDEBUG is meant to show debugging output from the vm. However, when it's activated in vm.c The make process fails in segmentation faults.
I've narrowed it down to the following variables displayed in check_env: env->block.dfp[3] and env->block.dfp[4] Commenting them out like so makes the segfaults disappear.
static int
check_env(rb_env_t * const env)
{
printf("---\n");
printf("envptr: %p\n", (void *)&env->block.dfp[0]);
printf("orphan: %p\n", (void *)env->block.dfp[1]);
printf("inheap: %p\n", (void *)env->block.dfp[2]);
/* printf("envval: %10p ", (void *)env->block.dfp[3]);
dp(env->block.dfp[3]);
printf("penvv : %10p ", (void *)env->block.dfp[4]);
dp(env->block.dfp[4]); */
printf("lfp: %10p\n", (void *)env->block.lfp);
printf("dfp: %10p\n", (void *)env->block.dfp);
/* if (env->block.dfp[4]) {
printf(">>\n");
check_env_value(env->block.dfp[4]);
printf("<<\n");
} */
return 1;
}However, I'm not clued up enough on the inner workings of the VM to say why or how that should be fixed intelligently.
History
Updated by Koichi Sasada 9 months ago
- ruby -v changed from 1.9.3dev to -
Hi,
(2011/04/29 4:52), Elise Huard wrote:
> PROCDEBUG is meant to show debugging output from the vm.
> However, when it's activated in vm.c
> #define PROCDEBUG 1
> The make process fails in segmentation faults.
Oops. I don't touch it on long time (because there is no bug which
requires this debug option). So maybe this check_env() doesn't catch up
Proc data structure.
--
// SASADA Koichi at atdot dot net
Updated by Koichi Sasada 9 months ago
- Category set to core
- Status changed from Open to Assigned
- Assignee set to Koichi Sasada
- Priority changed from Normal to Low
Updated by Hiroshi Nakamura 8 months ago
- Target version set to 2.0.0