|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Not sure wether this was reported before.
//-----------
#version 3.8;
#macro SomeThing(A)
#local RD = dictionary;
RD
#end
#declare SD = SomeThing(1);
//-----------
This crashes POV-Ray. Sometimes it asks to write a dump file.
//-----------
#version 3.8;
#macro SomeThing(A)
#local RD = dictionary;
(RD)
#end
#declare SD = SomeThing(1);
//------------
This results in: test.pov" line 5: Parse Error: Expected 'numeric
expression', dictionary
identifier found instead
Ingo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
hi,
ingo <ing### [at] tagpovrayorg> wrote:
> Not sure wether this was reported before.
>
> //-----------
> #version 3.8;
>
> #macro SomeThing(A)
> #local RD = dictionary;
> RD
> #end
>
> #declare SD = SomeThing(1);
> //-----------
>
> This crashes POV-Ray. Sometimes it asks to write a dump file.
here (unofficial alpha.10064268) it parses cleanly, with and without argument.
can also assign key to 'SD'. only warnings (assumed gamma, no objects).
> //-----------
> #version 3.8;
>
> #macro SomeThing(A)
> #local RD = dictionary;
> (RD)
> #end
>
> #declare SD = SomeThing(1);
> //------------
>
>
> This results in: test.pov" line 5: Parse Error: Expected 'numeric
> expression', dictionary
> identifier found instead
same here.
regards, jr.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
in news:web.6075d5d9d2107a6c79819d986cde94f1@news.povray.org jr wrote:
> here (unofficial alpha.10064268) it parses cleanly, with and without
> argument.
> can also assign key to 'SD'. only warnings (assumed gamma, no
> objects).
>
>
Should have added:
This is version 3.8.0-x.10064738+av694.msvc14.win64.
Win10.
Thanks jr, I'll step a version or so back tomorrow to test.
Ingo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Op 13/04/2021 om 19:17 schreef ingo:
> Not sure wether this was reported before.
>
>
> //-----------
> #version 3.8;
>
> #macro SomeThing(A)
> #local RD = dictionary;
> RD
> #end
>
> #declare SD = SomeThing(1);
> //-----------
>
> This crashes POV-Ray. Sometimes it asks to write a dump file.
>
>
> //-----------
> #version 3.8;
>
> #macro SomeThing(A)
> #local RD = dictionary;
> (RD)
> #end
>
> #declare SD = SomeThing(1);
> //------------
>
>
> This results in: test.pov" line 5: Parse Error: Expected 'numeric
> expression', dictionary
> identifier found instead
>
> Ingo
>
Using 3.8.0-alpha.10064268-+av691.msvc14w
First code works fine.
Second code crashes with identical parse error.
--
Thomas
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 4/13/21 1:17 PM, ingo wrote:
> Not sure wether this was reported before.
>
> //-----------
> #version 3.8;
>
> #macro SomeThing(A)
> #local RD = dictionary;
> RD
> #end
>
> #declare SD = SomeThing(1);
> //-----------
>
I'm confused as to what you are trying to do. Not myself used
dictionaries much as yet, but it looks to me like you are after:
#macro SomeThing()
dictionary
#end
#declare SD = SomeThing();
---
That said. Playing around with your original, first encoding I do see
flaky segfaults which come and go in the povr branch that includes a set
of v3.8 parser fixes necessary for other parser issues.
Thus far, the direct encoding above has never crashed. Neither has v3.8
master at commit 74b3ebe0 for ANY variation of your encodings (ignoring
the second (RD) one and less any heavy dictionary use).
I'll try and get together a debug build over the next few days -
hopefully it crashes reliably enough I can run down the cause. I suspect
something is going wrong with the identifier pointer handling when we
get to the:
#declare SD = RD; // Effective action
Then depending on where the pointers point in memory and perhaps too the
actual dictionary use, we crash or not - but, we shall see.
Bill P.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
in news:6076e733$1@news.povray.org William F Pokorny wrote:
>> //-----------
>> #version 3.8;
>>
>> #macro SomeThing(A)
>> #local RD = dictionary;
>> RD
>> #end
>>
>> #declare SD = SomeThing(1);
>> //-----------
>>
>
> I'm confused as to what you are trying to do. Not myself used
> dictionaries much as yet, but it looks to me like you are after:
The goal is to build a datastructure with the macro to pass around. After
eliminating everything in the body of the macro this is what's left.
Haven't tried other versions of POV-Ray yet. Fiddling with something else.
Will try soon as my old brain starts to remember discussing this with
clipka before, .. I think.
Ingo
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 4/14/21 1:44 PM, ingo wrote:
> in news:6076e733$1@news.povray.org William F Pokorny wrote:
>
>>> //-----------
>>> #version 3.8;
>>>
>>> #macro SomeThing(A)
>>> #local RD = dictionary;
>>> RD
>>> #end
>>>
>>> #declare SD = SomeThing(1);
>>> //-----------
>>>
>>
>> I'm confused as to what you are trying to do. Not myself used
>> dictionaries much as yet, but it looks to me like you are after:
>
> The goal is to build a datastructure with the macro to pass around. After
> eliminating everything in the body of the macro this is what's left.
Perhaps it would be simpler for the macro body to just be:
#macro...
dictionary {
...
}
#end
I do not see the reason for the local variable RD, though it 'should'
always work - or always fail, if illegal to do.
>
> Haven't tried other versions of POV-Ray yet. Fiddling with something else.
> Will try soon as my old brain starts to remember discussing this with
> clipka before, .. I think.
>
Might not be worth your time. I think the land mine is sitting there
with dictionaries no matter the version.
We can debug with simpler SDL. Further, if v3.8 master is compiled with
POV_DEBUG set and the RD dictionary is set up with a few defaults, v3.8
based version reliably trips a hard, debug, parser panic assertion.
This means there are at least a couple things wrong when doing
assignments like #declare SD = RD; with dictionaries.
The original povr segfault (when I hit it) is during a pointer
assignment during the parser clean up. The panic test which fails is
couple lines below it, doing a reference>0 check. (Moving the test prior
to the assignment doesn't roll up the segfault)
// ./configure COMPILED_BY="wfp" CXXFLAGS="-DPOV_DEBUG"
//-----------
#version 3.8;
// #local RD = dictionary;
#local RD = dictionary {
.foo: "this is nice.",
.bar: 12345
}
#declare SD = RD;
#error "Stop after parsing"
//-----------
Aside 1: the array code has special empty array handling, which doesn't
exist for dictionaries. Perhaps it should...?
Near term. If using dictionaries, I'd recommend configuring and
compiling with POV_DEBUG defined no matter the version - some protection
in that.
Aside 2: The segfault and POV_DEBUG assertion is during parser clean up.
However, I don't understand the related code well enough to know whether
or not there might be situations where dictionaries might be 'running'
OK, but not always behaving as they should. Users beware.
Unsure how long it might take me to unravel the dictionary parsing code
well enough to understand the problems - let alone fix them...
Bill P.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
ingo <ing### [at] tagpovrayorg> wrote:
> Not sure whether this was reported before.
>
> ...
>
> This crashes POV-Ray. Sometimes it asks to write a dump file.
>
> ...
>
> This results in: test.pov" line 5: Parse Error: Expected 'numeric
> expression', dictionary identifier found instead
>
> Should have added:
> This is version 3.8.0-x.10064738+av694.msvc14.win64.
> Win10.
Confirmed in both cases (running the same version in Win10).
William P's 'clean' code runs smoothly...
#macro SomeThing()
dictionary
#end
#declare SD = SomeThing();
For what it's worth, this also runs OK...
#macro SomeThing(A)
dictionary
#end
#declare SD = SomeThing(1);
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
in news:web.60793806d2107a6cd98418916e066e29@news.povray.org Kenneth
wrote:
> Confirmed
Thanks
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 4/15/21 11:59 AM, William F Pokorny wrote:
> Aside 2: The segfault and POV_DEBUG assertion is during parser clean up.
> However, I don't understand the related code well enough to know whether
> or not there might be situations where dictionaries might be 'running'
> OK, but not always behaving as they should. Users beware.
>
> Unsure how long it might take me to unravel the dictionary parsing code
> well enough to understand the problems - let alone fix them...
I believe I've run down the two issues to mistakes in a copy
constructor. However, I need to test(1) with large dictionaries having
key hashing collisions to be sure my fixes - as well the previously
existing code - work correctly.
Posting immediately to confirm the previous code has the potential to
"cross dictionaries" if you are using '#declare dic2 = dic1;' like
encodings. Tangled and orphaned entries are possible.
(1) I suspect jr's recent foreach include work will come in handy! :-)
Bill P.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |