Number: 2241

Date: 24-Sep-84 13':20':16

Submitter: Masinter

Source: Card, Kaplan

Subject: RECOMPILE can use incorrect EXPRS from in core when recompiling different version of file than loaded

Assigned To: Masinter

Attn: 

Status: Fixed

In/By: Intermezzo

Problem Type: 

Impact: 

Difficulty: 

Frequency: 

Priority: 

System: 

Subsystem: 

Machine: 

Disk: 

Lisp Version: 24-Sep-84 09':49':01

Source Files: 

Microcode Version: 5124

Memory Size: 4096

File Server: 

Server Software Version: 

Disposition: fixed in COMPILE.DCOM dated approx 24-Sep-84 13':00

Description: There is a different bug that JonL hit where RECOMPILE will take an EXPR property over what''s on the file even if they bear no relation. I think, even if RECOMPILEDEFAULT is CHANGES, that it makes sense to assume only that the real EXPRs bear any resemblance to what the user might wnat to compile'
-----'
'
Date': 16 Sep 84 19':20 PDT'
From': JonL.pa'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': masinter.pa''s message of 16-Sep-84  0':22':10 PDT'
To': masinter.pa'
cc': vanMelle.pa, Kaplan.pa, Lispsupport.pa, Lispcore↑.pa'
'
Glllaag! clarify what you mean by "the real EXPRs" -- hopefully you mean "those found on the file, not those found in core".'
'
-- JonL --'
'
From': Masinter.pa'
Date': 16-Sep-84 21':17':52 PDT'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': JonL''s message of 16 Sep 84 19':20 PDT'
To': JonL'
cc': masinter, vanMelle, Kaplan, Lispsupport, Lispcore↑'
'
A reasonable goal would be to make it "do the right thing" in more cases than it does now, without slowing it down in the cases where it now already does the right thing.'
'
I think that means that RECOMPILE should use the in-core EXPRs when there is a reasonable chance that they are the same as the ones on the file.'
'
Lets see': if the file you are RECOMPILEing has been loaded, and isn''t currently marked as needing to be MAKEFILEd, and there are functions around which are EXPRP (EXPRs in the definition cell) and the file package isn''t disabled, THEN, it is reasonable to assume that the EXPRs in the definition cell are the same as the ones on the file. There are circumstances where that isn''t true, but you have to subvert the file package fairly carefully to get into such a state, because most things that would change the EXPR definition would also mark the file as needing to be remade.'
'
Can anyone think of a counter-example? (I haven''t put *any* of this in, by the way.)'
'
-----'
'
-----'
'
Date': 16 Sep 84 23':58 PDT'
From': JonL.pa'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': Masinter.pa''s message of 16-Sep-84 21':17':52 PDT'
To': Masinter.pa'
cc': JonL.pa, vanMelle.pa, Kaplan.pa, Lispsupport.pa, Lispcore↑.pa'
'
The situation wherein I''ve experienced lossage was loading a file into a sysout -- .dcom loaded normally, and souces loaded PROP -- and then RECOMPILING on the "next" version of the file, which "next" version was edited and made from another machine.  Is that the counterexample you are looking for?'
'
-- JonL --'
'
-----'
'
'
Date': 17 Sep 84 14':04 PDT'
From': stansbury.pa'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': Masinter.pa''s message of 16-Sep-84 21':17':52 PDT'
To': Masinter.pa'
cc': JonL.pa, vanMelle.pa, Kaplan.pa, Lispsupport.pa, Lispcore↑.pa'
'
I feel pretty strongly that the slowdown of loading source is well worth it.  Compared to the amount of time it takes to do a compile, loading a couple of source definitions is not too painful; I''d much rather wait for that than have the vague possibility of in-core exprs being out of whack and causing hard-to-explain subtly wrong compiled files.'
'
I''ve had recompile compile the wrong definition, and it''s a nasty sort of bug to track down, because it''s the last place you''d think to look.'
'
-- Tayloe.'
'
-----'


Workaround: 

Test Case: 

Edit-By: 

Edit-Date: