Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000671Core InformSource text and punctuationpublic2011-06-01 15:242014-05-07 07:34
Assigned Tograham 
Platformx86OSWindowsOS VersionVista
Product Version6G60 
Target VersionFixed in Version6L02 
Summary0000671: Internal error "no heading for position P"
DescriptionThe attached source provokes

- - - -
Problem. An internal error has occurred: no heading for position P. The current sentence is 'To decide if (S - W X) ended in failure' ; the error was detected at line 844 of "Chapter 6/Headings.w". This should never happen, and I am now halting in abject failure.
- - - -

Note that it is essential for W X to be a multiword scene name, and it is also critical that the source text try to set properties of more than one object.
Minimal Source Text To Reproduce
There is a room.

W X is a scene.
W X ends in failure when true is true.

The description of Y during W X is "".
The description of Z during W X is "".
TagsNo tags attached.
Effect(critical) Compiler reports internal error
Attached Files

- Relationships

-  Notes
jmcgrew (administrator)
2011-06-01 20:44

This code is invalid. You can't set different values for a property during different scenes this way; if you look at the World Index, you'll see that you've accidentally created separate objects called "Derelict Bicycle", "Derelict Bicycle during Stupidhotfix", "Derelict Bicycle during Kerapata Bombardment", etc.

However, I7 responding with an internal error like this is still a bug.
EmacsUser (manager)
2011-06-03 15:34

Hmm, the minimal source text compiles without problem for me.
jmcgrew (administrator)
2011-06-03 15:40
edited on: 2011-06-03 15:41

Yeah, the bug only occurs when one of the sentences from "Additional Information" is included.

We can probably trim out most of the "Minimal" code. As is, without the additional code, it compiles but doesn't work as expected because it creates several duplicate objects.

EmacsUser (manager)
2011-06-09 00:03

Taylstev, neither of us can recreate the problem, even including the paragraph from the additional information (the end of the minimal steps to reproduce). Can you check that nothing essential to the bug has been left out of the minimal source text? If nothing is missing, the bug might depend on system settings, and we'll have to dig a little more.
taylstev (reporter)
2011-06-09 06:18

I can provide you with the entirety of my game, if that should so help. Now, I have continued working on my project since the reporting of this error, so the enclosed source text does differ somewhat from the source text listed in the original error report (notably, I fixed the issue JMCGrew advised me upon in the first feedback message), but I have tried putting the problematic code back in the current model and it runs up the same error message as it did before, so the problem does indeed persist. If you require any more assistence, please let me know.


"Soldier Projekt" by Connor Horn

Use no scoring. Use American dialect.

When play begins, say "Hurtling meteors of burning hate crash about you in a cavalcade of immolation. Everywhere upflung dirt cascades into a broken sky with frightened offense, hovering but briefly upon the crimson horizon before plummeting violently back down to earth in a constant torrent of organic rain. In the distance the silvery, shaking skyscrapers of Eletheia melt apart into a grayish haze of liquid uncertainty, almost as if they are slowly inching away from the broadening deathscape before it. Beneath them, the battered and beaten Eletheian army braces itself, tensing together into a brittle, wavering line. The assault continues, and the Eletheians contemplate retreat.

It all seems pretty hopeless now. The Kethites advance at a constant rate, marching ever onwards towards the city square in a tone of solemn, implacable inevitability. With every passing second it seems more and more likely that this battle will go the same way it did in Archaid, in Melaburis, in the Elsendiaed Woods, in Ursem Pass, in Selechurn: with the Kethites winning an absolute victory over a scrambling, retreating Eletheian Army. The only difference now is that there is nowhere left to run. The capital itself is undersiege. If this battle is lost, the kingdom is lost. There will be no dawn for Elethia should the Holy Statue of Lady Marnette fall, and that sacred relic is now but several miles from the voracious maw of the Kethite army.

Many of the men have begun to say that it is unlikely that the Eletheians will even survive the night. As you race through the beseiged ruins of Eletheia City, watching incoming artillery send towering bastions of resolute metal splash down to the ground in traumatic bursts of vicious shrapnel, you find yourself starting to believe them.

This may very well be the final hour of a once-glorious civilization -- and here you are, stuck deep in the unrelenting tempest of cruel, decisive history. As you sprint towards the battle headquarters, package in hand, you start to wonder how you're ever going to get out of this mess alive."

Teremas Street is a room. The player is here. The description of Teremas Street is "[if unvisited]You stop running for a brief moment to catch your breath. You've been running ever since you left the frontlines, and you're exhausted. You brush the sweat off of your face as you reach into your uniform and grab your cantine, taking a quick swig of water and letting out a tired gasp. Panting, you hurriedly scan your surroundings.

[end if]The bruised cityscape sprawls the distance, hovering over you oppressively. All about you the skyscrapers and buildings of Eletheia City meld together in a haunting, red-and-steel mosaic, coloring the sky in a violent, erupting pyre of urban destruction. To your north is the foot of Kerapata Hill, a sloping, sleeping rise of gravel and pavement."

Cityscape is a backdrop. Cityscape is everywhere. The description of Cityscape is "The decaying, weak tendrils of a grasping hand, the distant skyline is painted with the heavy tones of a dying, desperate culture. As the battle rages and the world burns it seems hard to ignore the warning written into the horizon: the Kethites are everywhere, and there is no escape from their impending wrath.

With disgust, you turn away, focusing instead on the matter at hand. There must be a chance that Eletheia can survive this onslaught! Even in the deepest darkness there lurks the light of hope, and all that you need to do is simply work towards reaching that hope. Quickly." Understand "city", "skyline", "Eletheia", and "Eletheia City" as Cityscape.

KerapataHillScenery is scenery in Teremas Street. The description of KerapataHillScenery is "The hill is a sudden rise in the cityscape, a sharp and contrasting, yet somehow natural-looking, reach of Eletheia City. In the past Kerapata Hill was a bustling shopping center, full of decadent delicatessens and lavish stores boasting the latest fashions and the premier styles. Now, however, the once-famous hill stands abandoned and alone, a grayscale mockery of a fleeting culture of Eletheian excess inlaid boldly in the poignant scene of a bruised and fading nation." Understand "hill" and "Kerapata Hill" as KerapataHillScenery when the location is Teremas Street.

After doing something in Teremas Street for the second time, say "With a quick sigh, you push off from the wall you were resting upon and get back onto your feet. You need to get going again. There's a war going on, and you've got things to do."

KerapataHillRoom is a room. It is north of Teremas Street. The printed name of KerapataHillRoom is "Kerapata Hill". The description of KerapataHillRoom is "Once a bustling shopping center full of lavish delicatessens and decadent stores boasting the latest fashions and the premier styles, Kerapata Hill now stands abandoned and alone, a grayscale mockery of the fleeting culture of Eletheian excess.

On the other side of the street a rusting lightpost stands at an unnatural angle, bent from the constant barrage and covered in industrial ash. A bicycle lies in the center of the street, derelict. Next to you on your right is an abandoned store, now bereft of its once endless supply of well-to-dos and oblivious socialites. To your north is the summit of Kerapata Hill, and beyond it you can almost make out the Battle Headquarters."

Stupidhotfix is a scene. Stupidhotfix begins when the player is in KerapataHillRoom for the first turn. Stupidhotfix ends when Kerapata Bombardment begins.

Instead of going south when the location is KerapataHillRoom during Stupidhotfix, say "No, there is no sense in heading back. You need to deliver this package to Battle Headquarters as soon as possible. You've got to press onward."

Rusting Lightpost is scenery in KerapataHillRoom. The description of Rusting Lightpost is "Thousands of lightposts line the bright city of Eletheia, all standing proudly as messengers of light in a glorious capital. This lightpost, however, seems to have forgotten such glory under this new black cloud of war, and lies crooked, bent, lightless, and lethargic in the midnight cast of battle. A sickly malaise seems to have devoured its soul, and all that is left is a rusted cage, devoid of all hope, devoid of all purpose.

In a lot of ways, it seems to you that the city itself is dying under the bombardment, and the Eletheians are but scurrying around on a corpse sinking into the blackness. This lightpost, if anything, represents that unfortunate truth to you. In disgust, you look away. It is making you uncomfortable." Instead of pushing Rusting Lightpost, say "It looks more bent now. That is not much of an accomplishment." Instead of taking Rusting Lightpost during Stupidhotfix, say "You don't even want to look at that thing, much less take it with you. Besides, you're not entirely certain you would be able to get that thing out of the ground anyway, so maybe leaving it there is for the best." Understand "lamp", "lamppost", "lamp post", "street lamp", "streetlamp", "light", "streetlight", and "street light" as Rusting Lightpost when the location is KerapataHillRoom.

Derelict Bicycle is an undescribed object in KerapataHillRoom. The description of Derelict Bicycle is "Lying there, alone and forgotten in the center of the road, is an abandoned bicycle. You do not know anything about it. How it got there is a mystery, and one you most certainly do not have the time to figure out now. Perhaps you could commandeer it." After taking Derelict Bicycle, say "You're not particularly good with riding bicycles, but this should speed up your trip to Battle Headquarters. You place the package you're carrying on the attached basket on the back of the bicycle and start pushing the bicycle uphill." Understand "bike" as Derelict Bicycle when the location is KerapataHillRoom. Riding is an action applying to one thing. Understand "ride [something]" as riding. After riding Derelict Bicycle for the first time, say "You hop on the bike, excited to speed up your trip to Battle Headquarters." After riding Derelict Bicycle more than once, say "You continue to bike up the hill." Understand "pedal [something]", "use [something]" and "ride on [something]" as riding when the location is KerapataHillRoom. Instead of riding something that is not held, say "You need to grab it, first."

Akrienne's is scenery in KerapataHillRoom. The description of Akrienne's is "The store seems to be a fine bakery of sorts. There is a large sign proudly adorning the fine wood door, and a window on the right side displaying a fancy-looking dining room and some days-old truffles that never got sold off before the war." Akrienne's Sign is part of Akrienne's. The description of Akrienne's Sign is "A large, extravagantly-painted sign brightly declaring [quotation mark]Akrienne's Premier Bakery, the foremost Eletheian bakery since 1732 RY!" Akrienne's Door is a part of Akrienne's. The description of Akrienne's Door is "Made of rich, heavy Balrusian wood fashioned gently into the doorway, the door to the bakery seems both effusive and inviting. A nice tinge of age permeates it."Akrienne's Window is part of Akrienne's. The description of Akrienne's Window is "Made out of pristine glass known more for show than for durability, the window into the bakery opens up into a well-furbished dining room covered in delicate white table sheets and laid out beneath ornate chandeliers brimming with exuberance. Somehow, though, the lavish decorations all seem wholly out of place in something as mundane as a bakery. In your mind, the expensive fashions of Kerapata Hill always possess a tinge of irony in them." Understand "store", "bakery", "restaurant", and "delicatessen" as Akrienne's when the location is KerapataHillRoom. Understand "dining room", "bakery window", "store's window", "store window", "bakery's window", "restaurant window", "restaurant's window", and "truffles" as Akrienne's Window when the location is KerapataHillRoom.

Instead of going north when the location is KerapataHillRoom for the first time during Stupidhotfix, say "You do some running but you don't seem to make much progress. The hill is pretty steep." Instead of going north when the location is KerapataHillRoom for the second time during Stupidhotfix, say "You get a little further towards the summit of the hill. It is taking way too long to get up this hill!" Instead of going north when the location is KerapataHillRoom for the third time during Stupidhotfix, say "The summit still seems so ridiculously out of reach. It's going to take you forever to get up this hill."

Kerapata Bombardment is a scene. Kerapata Bombardment begins when the player is in KerapataHillRoom for the fifth turn.

When Kerapata Bombardment begins:
say "Suddenly the piercing scream of an incoming artillery shell splits the air, sending sonic knives cascading below in dogmatic rebuke. You're being bombed! Just beyond you, a spiraling shell slams angrily into a radio tower, causing a bubbling explosion to reverb outwards and sending the singed metal skeleton shrieking down to the ground. You've got to get out of here!";
now the description of Derelict Bicycle is "There's no sense trying to outrace the artillery shells -- too dangerous. It'd be a better idea to find cover. Still, though, you can't help but think that the bicycle's sturdy frame could come in handy.";
now the description of Rusting Lightpost is "The pathetic little thing probably won't survive the shelling. You cast one last memorial glance before attempting to find cover again.";
now the description of Akrienne's is "The store looks like it might survive the shelling! You can't help but think that it'd make great cover from the bombardment. The store's proud sign, sturdy door, and enticing window now all stand between you and safety.";
now the description of Akrienne's Sign is "While the sign is probably doomed, it looks to you like the bakery itself is likely to survive the bombing. You figure that it would make good shelter from the incoming artillery. You need to find a way in!";
now the description of Akrienne's Door is "The door into the bakery seems to be made of a sturdy, rich wood.";
now the description of Akrienne's Window is "The window looks to be slightly fragile. Perhaps you could break it?"

Instead of going north during Kerapata Bombardment, say "You need to find cover! You can worry about delivering the package after the artillery bombardment ends!" Instead of going south during Kerapata Bombardment, say "There's nowhere to hide on Teremas Street! You don't need to go back there!" After taking Derelict Bicycle during Kerapata Bombardment, say "You might be needing this. No sense letting it get blown to pieces by artillery." Instead of riding Derelict Bicycle during Kerapata Bombardment, say "You're not going to outrun the incoming artillery. You need a place to hide, not a place to escape to!"

Understand the command "break" as something new. Breaking is an action with past participle broke applying to one visible thing. Understand "break [something]" as breaking. Breaking it with is an action applying to two visible things. Understand "break [something] with [something]" and "break [something] using [something]" as breaking it with. Instead of breaking something with Derelict Bicycle when Derelict Bicycle is not held, say "The bike is in the center of the street. You're going to have to bring it over first." Instead of breaking Akrienne's Door, say "With a curse, you realize that Balrusian wood is really as strong as they say. There's no way you're going to break that door with your bare hands." Instead of breaking Akrienne's Door with Derelict Bicycle, say "You muster your strength and, with a powerful throw, send the bicycle smashing into the door. It reverbs with the force of the blow, but does not look damaged in the slightest. You curse violently; it looks like you're not getting in that way.

There's got to be another way into that store!" Akrienne's Door can be open or closed. Akrienne's Door is closed. Instead of opening Akrienne's Door for the first time, say "You wrestle with the knob, but the door's locked. You can't make it budge!" Instead of opening Akrienne's Door more than one time, say "Still locked!"

Understand "beat down", "punch", "hit", "smash open", "throw", "smash", "destroy", and "break down [something]" as breaking when the location is KerapataHillRoom. Understand "smash open [something] with [something]", "break open [something] with [something]", and "destroy [something] with [something]" as breaking it with when the location is KerapataHillRoom. Understand "hurl [something] at [something]", "toss [something] at [something]", and "break [something] at [something]" as breaking it with (with nouns reversed) when the location is KerapataHillRoom. Understand the command "throw" as something new. Understand the command "throw" as "break".

Before breaking something with something during Stupidhotfix:
say "There's absolutely no reason why you should do that.";
stop the action.

After breaking Akrienne's Window with Derelict Bicycle during Kerapata Bombardment:
say "Your heart pumping, your muscles straining, you grab the bike and, with all of your might, toss it straight at the bakery window. The bike sails right through the window, shattering it into scattered shards, and slams abruptly into a dining table, sending the table's unlit candles and flower vase flying off towards the wall.[paragraph break]

You dash inside and leap over the store counter, rushing straight through a door into the kitchen. You dive right behind an oven and have just enough time to pull your legs in before you hear a rumbling explosion bellow out from the street.[paragraph break]

All about you the fixtures shudder in a shaking pain, convulsing violently in a ghastly fit. The appliances in the kitchen flit about chaotically, crashing here and tumbling there in a drunken reverie, threatening to smash into you at any possible moment. The world flows in tumultous blows, boomeranging consciousness round and round about in a hazy twist of stuttering swirls, sending your mind speeding in directions that leave your vision reeling and lost. Currents of visual noise rush about in sweeping tides that gush out in uncertain shapes, leaving you dizzy, confused, disoriented, and bemused.[paragraph break]

The roar of the shells detonating outside reaches a feverish pitch, constantly growling out in a disharmonic screen of vicious white noise, making it sound so very likely to you that the world itself is splintering apart at the force of the bombardment. In sharp, painful notes you can hear the earth crying out, lamenting such abuse in the elemental music of forlorn nature.[paragraph break]

Through the sonic berating and the visual dischord, your besieged mind knows but one thing: you have survived the attack.";
move the player to the AKKitchen;
try silently dropping Derelict Bicycle;
now Derelict Bicycle is undescribed in AKDRoom.

 Instead of breaking Akrienne's Window during Stupidhotfix, say "That's an entirely unnecessary use of your energy. You've got better things to be doing with your time." After breaking Akrienne's Window during Kerapata Bombardment, say "You throw a firm punch straight into the window. It seems to buckle a little bit, but ultimately it stands strong, resolute. You're going to need something besides your first to break this window."

Every turn during Kerapata Bombardment:
repeat through Table of Bombardment Events:
say "[event entry][paragraph break]";
blank out the whole row;
rule succeeds.

Table of Bombardment Events
"In the distance you can hear the horrific music of several incoming shells. You need to find cover quickly!"
"The scream of the incoming shells gets closer. Any one of them could hit you!"
"Your heart beats at an alarming pace. You start sweating nervously. You desperately need to find cover!"
"Just over your head you hear a shell erupt into chaos, exploding an old brick-laid tower into millions of pieces."
"Bricks from the tower rain down in an echoing thrush. You need to get the hell out of here!"
"You cast a quick glance skyward, and curse as you realize there is an artillery shell heading straight towards you."
"The shell's ethereal cry races towards you, tearing apart the sky into thousands of rended fabrics. Reality itself seems to rip apart at the seams as this missile screeches towards you. In the distance, you can vaguely see the shadowy outline of a smiling, confident Death."
"Your mind convulses in feverish intensity, blazing into a fiery reverie as the oncoming missile looms nigh. You have but mere seconds to escape this impending blast or you shall soon add your own charred corpse to the daunting tally of fallen Eletheians. With these last moments, you desperately make a final push to survival, knowing that if you fail now, you are dead."
"The missile hits the street but a mere meter to your left. You see a sudden flash of light, a momentary explosion of illuminatory brilliance, and then nothing. Your ears ring. Your mouth tastes fire. You know only of your own immolation."

Kerapata Bombardment ends in failure when the number of filled rows in Table of Bombardment Events is 0. When Kerapata Bombardment ends in failure, end the story finally saying "You are consumed."

Kerapata Bombardment ends in success when the player is in AKKitchen for the first time.

AKKitchen is a room. The printed name of AKKitchen is "Bakery Kitchen". The description of AKKitchen is "[if unvisited]Slowly, the earth coalesces back into shapes. Everywhere prodigal color returns from its forlorn heights to rehabitate empty, visual shells, chaining the shy vivacity of sight once more to the unrelenting, draconian reality it had temporarily escaped. Your eyes find their use, and you begin to stir.

The shelling seems to have stopped. Wearily, you raise your head and assess the situation. [end if]Brimming full of broken glass, the bakery kitchen lies in disarray, smeared with an encasement of abused clutter thrown abroad by the artillery blast. Drawers hang open while shelves stand bereft, their proud adornments now lying listlessly upon the floor. Ingredients and the appliances that once used them now amble in state across counters and the ground in a stuttering stacatto, forming a myriad of metal trails intertwined into a single chaotic web of forgotten machinery and food.

Pressing on your ears is an oppressive silence, a ringing ambience of lost noise that smothers the scene in a regretful haze. It is rare to feel alone in a warzone, but in this lonely moment you find it hard not to feel like there is naught but you and this grim, wretched mausoleum of Eletheian culture for miles.

To your north, beyond a door limping on its single remaining hinge, is the dining area of the bakery."

AKKIngredients is scenery in AKKitchen. Understand "appliances" and "ingredients" as AKKIngredients when the location is AKKitchen. The description of AKKIngredients is "A sad array of fine ingredients lie entombed in wounded steel appliances. It is best to leave them where they lie." AKKDrawers is scenery in AKKitchen. Understand "drawers" as AKKDrawers when the location is AKKitchen. The description of AKKDrawers is "They're full of useless junk that you don't need." AKKShelves is scenery in AKKitchen. Understand "shelves" as AKKShelves when the location is AKKitchen. The description of AKKShelves is "What little remains of the items that once occupied these shelves are rent sideways or shattered. Indeed, some of the shelves, nearly knocked off the wall themselves, seem to threaten their own descent." AKKitchenScenery is scenery in AKKitchen. Understand "kitchen" as AKKitchenScenery. Instead of examining AKKitchenScenery, try looking.

Instead of doing something other than examining to AKKShelves for the first time:
say "With a hard tug, you give the shelves the final bit of help that they need, and they go crashing down.";
now the description of AKKShelves is "Bent, bruised, and broken upon the bakery floor, the battered shelves point in splintered pieces towards the kitchen door."

Instead of doing something other than examining to AKKShelves for the second time, say "You have done enough to those poor shelves. Just leave them be."

Test me with "x cityscape / n / take bike / ride bike / x lightpost / throw bike at window / x the shelves / x the kitchen / x the drawers / n"

AKDRoom is a room. It is north of AKKitchen. The printed name of AKDRoom is "Bakery". The description of AKDRoom is "Bright splashes of scattered rubble dominate the desecrated bakery. The window lies in languid ruin, and the store's decorations are splayed about in traumatized display. Remnants of day-old truffles besmirch "
EmacsUser (manager)
2011-06-09 13:22

Thanks, confirmed. I'll have a reduced version shortly.
graham (administrator)
2011-10-08 05:17

The actual fault here was peculiar and to do with how Inform parses names; the reduced minimal source text was legal, if misleading, source text, but it creates two things, "Y during W X" and "Z during W X"; this then makes it a matter of disambiguation to decide what "W X" refers to - the scene, or one of these two objects. Inform uses context to decide this, but was failing to work out the context. I've now strengthened its ability to do this, and that may well help in other peculiar edge cases.

- Issue History
Date Modified Username Field Change
2011-06-01 15:24 taylstev New Issue
2011-06-01 20:44 jmcgrew Effect (serious) Compiler rejects valid code => (critical) Compiler reports internal error
2011-06-01 20:44 jmcgrew Note Added: 0001188
2011-06-01 20:44 jmcgrew Severity serious => critical
2011-06-01 20:44 jmcgrew Status new => acknowledged
2011-06-01 20:44 jmcgrew Summary Random Translation Error on Seemingly Arbitrary Code => Internal error "no heading for position P"
2011-06-01 20:44 jmcgrew Steps to Reproduce Updated View Revisions
2011-06-03 15:34 EmacsUser Note Added: 0001189
2011-06-03 15:40 jmcgrew Note Added: 0001190
2011-06-03 15:41 jmcgrew Note Edited: 0001190 View Revisions
2011-06-09 00:03 EmacsUser Note Added: 0001192
2011-06-09 00:03 EmacsUser Status acknowledged => feedback
2011-06-09 06:18 taylstev Note Added: 0001195
2011-06-09 06:18 taylstev Status feedback => new
2011-06-09 06:18 taylstev Note View State: 0001195: private
2011-06-09 06:19 taylstev Note View State: 0001195: public
2011-06-09 13:22 EmacsUser Note Added: 0001196
2011-06-09 13:22 EmacsUser Status new => confirmed
2011-06-09 13:44 EmacsUser Description Updated View Revisions
2011-06-09 13:44 EmacsUser Steps to Reproduce Updated View Revisions
2011-06-09 13:44 EmacsUser Additional Information Updated View Revisions
2011-10-08 05:17 graham Note Added: 0001334
2011-10-08 05:17 graham Status confirmed => resolved
2011-10-08 05:17 graham Resolution open => fixed
2011-10-08 05:17 graham Assigned To => graham
2014-05-07 07:34 jmcgrew Fixed in Version => 6L02
2014-05-07 07:34 jmcgrew Status resolved => closed

Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker