Subject: Re: bug#43280: 28.0.50; [native-comp] Symbol's function definition is void

From: Andrea Corallo <[email-masked]>
Date: Sat, 12 Sep 2020 17:12:23 +0000

Rob Moss <[email-masked]> writes:

> On Sat, 12 Sep 2020 at 00:44, Andrea Corallo <[email-masked]> wrote:
>>
>> Rob Moss <[email-masked]> writes:
>>
>>
>> > Hi Andrea,
>> >
>> > I just tried it with 15acd27d1c0de8b56bab61daa0a8fcd4fef0fdc4 and
>> > experienced the same issue.
>> >
>> > All the best,
>> > Rob
>>
>> Hi Rob,
>>
>> I had some trouble reproducing with the reproduced as I got a lots of
>> errors `Invalid read syntax: "Invalid byte-code object"` byte-compiling
>> use-package.  This both on master and feature/native-comp.
>
> Hi Andrea,
>
> I'm sorry, I don't really know how to make a minimal working example
> that downloads and installs packages. Do you know of any examples that
> I could learn from?

Hi Rob,

tipically what helps is if the reproducer manage to reproduce the issue
from a scratch Emacs.

IOW it should be runnable with something like:

HOME=~/a_tmp_emacs_dir .../emacs -Q -l reproducer.el

>> Anyway I managed to reproduce the issue with elpher installing it
>> manually.
>>
>> I believe the issue is not compiler related, elpher is using `url-port'
>> as a generalized variable (line 1326) but ATM I do not see this defined
>> anywhere in the Emacs codebase (maybe something was changed?).
>
> I'd never heard of a generalized variable, so I've read some of the
> relevant sections of the Emacs manual. I can't tell whether the line
> in question:
>
>     (setf (url-port address) (url-port current-address))
>
> should behave "correctly" (whatever that means). But elpher requires
> 'url-util, which in turns requires 'url-parse. So I would have
> expected `url-port' to be a valid function at this point, because it's
> defined in lisp/url/url-parse.el. I'm particularly confused because I
> only see the warning once elpher has been compiled to native code. So
> there does seem to be some difference in behaviour between the byte
> code and native code, at least on my computer.

Uh I was wrong apologies! :/

The gv setter for `url-port' is defined and is meant to be using
`url-portspec' that is the setter defined by the structure definition
`url' at the top of the url-parse.el.

I see the different behaviour from master to native-comp.  I think this
requires some more investigation on my side.

Thanks for the report!

  Andrea