[3.0.0] Inaccurate source location info for unbound variables

  • Open
  • quality assurance status badge
Details
3 participants
  • Ludovic Courtès
  • Ludovic Courtès
  • Andy Wingo
Owner
unassigned
Submitted by
Ludovic Courtès
Severity
normal
L
L
Ludovic Courtès wrote on 26 Nov 2019 16:20
[2.9.5] Inaccurate source location info for unbound variables
(address . bug-Guile@gnu.org)
8736ea64vg.fsf@inria.fr
Hello,

I have a test that runs ‘guix system build’ on this file:

Toggle snippet (16 lines)
(use-modules (gnu)) ; 1
(use-service-modules networking) ; 2

(operating-system ; 4
(host-name "antelope") ; 5
(timezone "Europe/Paris") ; 6
(locale "en_US.UTF-8") ; 7

(bootloader (GRUB-config (target "/dev/sdX"))) ; 9
(file-systems (cons (file-system
(device (file-system-label "root"))
(mount-point "/")
(type "ext4"))
%base-file-systems)))

Here, ‘GRUB-config’ is unbound, and the test expects to see a stack
frame corresponding to line 9.

However, the stack frame we get is for line 11, char 32, which
corresponds to (file-system-label "root").

So it would seem that the IP-to-source-location mapping is not quite
working as expected.

Thoughts?

Ludo’.
A
A
Andy Wingo wrote on 27 Nov 2019 10:53
(name . Ludovic Courtès)(address . ludovic.courtes@inria.fr)(address . 38388@debbugs.gnu.org)
87o8wxabm3.fsf@igalia.com
Hi,

On Tue 26 Nov 2019 16:20, Ludovic Courtès <ludovic.courtes@inria.fr> writes:

Toggle quote (28 lines)
> I have a test that runs ‘guix system build’ on this file:
>
> (use-modules (gnu)) ; 1
> (use-service-modules networking) ; 2
>
> (operating-system ; 4
> (host-name "antelope") ; 5
> (timezone "Europe/Paris") ; 6
> (locale "en_US.UTF-8") ; 7
>
> (bootloader (GRUB-config (target "/dev/sdX"))) ; 9
> (file-systems (cons (file-system
> (device (file-system-label "root"))
> (mount-point "/")
> (type "ext4"))
> %base-file-systems)))
>
> Here, ‘GRUB-config’ is unbound, and the test expects to see a stack
> frame corresponding to line 9.
>
> However, the stack frame we get is for line 11, char 32, which
> corresponds to (file-system-label "root").
>
> So it would seem that the IP-to-source-location mapping is not quite
> working as expected.
>
> Thoughts?

What version is this with?

Unfortunately as you know, bare identifiers don't have good source
location information. There are small improvements that can be made but
larger improvments are gnarly. Could be this is a case for a small
improvement though!

Andy
L
L
Ludovic Courtès wrote on 28 Nov 2019 09:20
(name . Andy Wingo)(address . wingo@igalia.com)(address . 38388@debbugs.gnu.org)
87y2w0za1h.fsf@inria.fr
Hello!

Andy Wingo <wingo@igalia.com> skribis:

Toggle quote (32 lines)
> On Tue 26 Nov 2019 16:20, Ludovic Courtès <ludovic.courtes@inria.fr> writes:
>
>> I have a test that runs ‘guix system build’ on this file:
>>
>> (use-modules (gnu)) ; 1
>> (use-service-modules networking) ; 2
>>
>> (operating-system ; 4
>> (host-name "antelope") ; 5
>> (timezone "Europe/Paris") ; 6
>> (locale "en_US.UTF-8") ; 7
>>
>> (bootloader (GRUB-config (target "/dev/sdX"))) ; 9
>> (file-systems (cons (file-system
>> (device (file-system-label "root"))
>> (mount-point "/")
>> (type "ext4"))
>> %base-file-systems)))
>>
>> Here, ‘GRUB-config’ is unbound, and the test expects to see a stack
>> frame corresponding to line 9.
>>
>> However, the stack frame we get is for line 11, char 32, which
>> corresponds to (file-system-label "root").
>>
>> So it would seem that the IP-to-source-location mapping is not quite
>> working as expected.
>>
>> Thoughts?
>
> What version is this with?

The wrong location info is with 2.9.5. 2.2.x (and 2.0.x) work fine.

Any idea where I should poke for debugging?

Toggle quote (5 lines)
> Unfortunately as you know, bare identifiers don't have good source
> location information. There are small improvements that can be made but
> larger improvments are gnarly. Could be this is a case for a small
> improvement though!

I know, that’s why this test checks a favorable case (symbol wrapped in
an sexp). So I agree this would be a welcome improvement, but I think
it’s unnecessary for the purposes of the use case above.

Thanks,
Ludo’.
A
A
Andy Wingo wrote on 29 Nov 2019 12:04
(name . Ludovic Courtès)(address . ludovic.courtes@inria.fr)(address . 38388@debbugs.gnu.org)
87eexrc5af.fsf@igalia.com
On Thu 28 Nov 2019 09:20, Ludovic Courtès <ludovic.courtes@inria.fr> writes:

Toggle quote (25 lines)
>>> I have a test that runs ‘guix system build’ on this file:
>>>
>>> (use-modules (gnu)) ; 1
>>> (use-service-modules networking) ; 2
>>>
>>> (operating-system ; 4
>>> (host-name "antelope") ; 5
>>> (timezone "Europe/Paris") ; 6
>>> (locale "en_US.UTF-8") ; 7
>>>
>>> (bootloader (GRUB-config (target "/dev/sdX"))) ; 9
>>> (file-systems (cons (file-system
>>> (device (file-system-label "root"))
>>> (mount-point "/")
>>> (type "ext4"))
>>> %base-file-systems)))
>>>
>>> Here, ‘GRUB-config’ is unbound, and the test expects to see a stack
>>> frame corresponding to line 9.
>>>
>>> However, the stack frame we get is for line 11, char 32, which
>>> corresponds to (file-system-label "root").
>
> Any idea where I should poke for debugging?

Sure would be nice to reduce the test case! Once you have reduced it, I
would first look at the result of ,expand on this form. If it looks the
same as in 2.2, then perhaps the CPS layer is at fault. Could be we're
dropping an important source location somewher.

Andy
L
L
Ludovic Courtès wrote on 22 Jan 2020 15:14
control message for bug #38388
(address . control@debbugs.gnu.org)
87sgk7bmtd.fsf@gnu.org
retitle 38388 [3.0.0] Inaccurate source location info for unbound variables
quit
L
L
Ludovic Courtès wrote on 7 Mar 2020 17:06
Re: bug#38388: [2.9.5] Inaccurate source location info for unbound variables
8736aki1y7.fsf@gnu.org
Hi,

Ludovic Courtès <ludovic.courtes@inria.fr> skribis:

Toggle quote (23 lines)
> I have a test that runs ‘guix system build’ on this file:
>
> (use-modules (gnu)) ; 1
> (use-service-modules networking) ; 2
>
> (operating-system ; 4
> (host-name "antelope") ; 5
> (timezone "Europe/Paris") ; 6
> (locale "en_US.UTF-8") ; 7
>
> (bootloader (GRUB-config (target "/dev/sdX"))) ; 9
> (file-systems (cons (file-system
> (device (file-system-label "root"))
> (mount-point "/")
> (type "ext4"))
> %base-file-systems)))
>
> Here, ‘GRUB-config’ is unbound, and the test expects to see a stack
> frame corresponding to line 9.
>
> However, the stack frame we get is for line 11, char 32, which
> corresponds to (file-system-label "root").

I can’t say I got to the bottom of why we got this weird line number,
but commit d3a775ff10cbd0e14af38d6f900a7538db89bd90 solves this specific
issue.

Ludo’.
?