cheeseboy
|
|
Posted on: August 08, 2013, 01:14:23 pm |
|
|
Location: The internet Joined: Mar 2011
Posts: 105
|
My games crashing in same spot every time and the error message couldn't be any less helpful. Please fix.
Error: FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCK!
Program received signal SIGSEGV, Segmentation fault. 0x000000000040b0e4 in enigma::ENIGMA_events () at Preprocessor_Environment_Editable/IDE_EDIT_events.h:80 80 ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_beginstep();
/********************************************************************************\ ** ** ** Copyright (C) 2008 Josh Ventura ** ** ** ** This file is a part of the ENIGMA Development Environment. ** ** ** ** ** ** ENIGMA is free software: you can redistribute it and/or modify it under the ** ** terms of the GNU General Public License as published by the Free Software ** ** Foundation, version 3 of the license or any later version. ** ** ** ** This application and its source code is distributed AS-IS, WITHOUT ANY ** ** WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ** ** FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ** ** details. ** ** ** ** You should have recieved a copy of the GNU General Public License along ** ** with this code. If not, see <http://www.gnu.org/licenses/> ** ** ** ** ENIGMA is an environment designed to create games and other programs with a ** ** high-level, fully compilable language. Developers of ENIGMA or anything ** ** associated with ENIGMA are in no way responsible for its users or ** ** applications created by its users, or damages caused by the environment ** ** or programs made in the environment. ** ** ** \********************************************************************************/
//This file was generated by the ENIGMA Development Environment. //Editing it is a sign of a certain medical condition. We're not sure which one.
namespace enigma { event_iter *event_alarm; // Defined in 20 objects event_iter *event_animationend; // Defined in 5 objects event_iter *event_beforecollisionautomaticcollisionhandling; // Defined in 0 objects event_iter *event_beginstep; // Defined in 0 objects event_iter *event_collision; // Defined in 8 objects event_iter *event_create; // Defined in 17 objects event_iter *event_draw; // Defined in 4 objects event_iter *event_keyboard; // Defined in 2 objects event_iter *event_localsweep; // Defined in 0 objects event_iter *event_particlesystemsupdate; // Defined in 0 objects event_iter *event_step; // Defined in 14 objects int event_system_initialize() { events = new event_iter[11]; // Allocated here; not really meant to change. objects = new objectid_base[21]; // Allocated here; not really meant to change. event_alarm = events + 0; event_alarm->name = "Alarm ..."; event_animationend = events + 1; event_animationend->name = "Animation End"; event_beforecollisionautomaticcollisionhandling = events + 2; event_beforecollisionautomaticcollisionhandling->name = "Before collision automatic collision handling"; event_beginstep = events + 3; event_beginstep->name = "Begin Step"; event_collision = events + 4; event_collision->name = "obj_19"; event_create = events + 5; event_create->name = "Create"; event_draw = events + 6; event_draw->name = "Draw"; event_keyboard = events + 7; event_keyboard->name = "Keyboard <key8>"; event_localsweep = events + 8; event_localsweep->name = "Locals sweep"; event_particlesystemsupdate = events + 9; event_particlesystemsupdate->name = "Particle Systems Update"; event_step = events + 10; event_step->name = "Step"; return 0; } int game_settings_initialize() { window_set_fullscreen(0); texture_set_interpolation(0); window_set_cursor(cr_none); window_set_region_scale(-0.01, 0); window_set_sizeable(0); window_set_stayontop(0); window_set_showborder(1); window_set_showicons(1); return 0; } variant ev_perf(int type, int numb) { return ((enigma::event_parent*)(instance_event_iterator->inst))->myevents_perf(type, numb); } int ENIGMA_events() { for (instance_event_iterator = event_beginstep->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_beginstep(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); for (instance_event_iterator = event_alarm->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_alarm(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); for (instance_event_iterator = event_keyboard->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_keyboard(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); for (instance_event_iterator = event_step->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_step(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); for (instance_event_iterator = event_localsweep->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_localsweep(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); enigma::perform_callbacks_before_collision_event(); enigma::update_globals(); for (instance_event_iterator = event_collision->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_collision(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); enigma::perform_callbacks_particle_updating(); enigma::update_globals(); if (automatic_redraw) screen_redraw(); enigma::update_globals(); for (instance_event_iterator = event_animationend->next; instance_event_iterator != NULL; instance_event_iterator = instance_event_iterator->next) { ((enigma::event_parent*)(instance_event_iterator->inst))->myevent_animationend(); if (enigma::room_switching_id != -1) goto after_events; } enigma::update_globals(); after_events: if (keyboard_check_pressed(vk_escape)) game_end(); if (keyboard_check_pressed(vk_f4)) window_set_fullscreen(!window_get_fullscreen()); if (keyboard_check_pressed(vk_f1)) show_info(); if (keyboard_check_pressed(vk_f9)) {} //if (keyboard_check_pressed(vk_f5)) game_save('_save542964527.sav'); //if (keyboard_check_pressed(vk_f6)) game_load('_save542964527.sav'); enigma::dispose_destroyed_instances(); enigma::rooms_switch(); enigma::sleep_for_framerate(room_speed); return 0; } // event function } // namespace enigma
|
|
|
Logged
|
|
|
|
Goombert
|
|
Reply #1 Posted on: August 08, 2013, 01:26:27 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
Alright seriously this is sickening this crap needs removed from the compiler output, this is a game engine FOR CHILDREN, do you have no morals or common sense Josh? This does nothing more than show you have a very poor ability to articulate yourself, and it affects the rest of us developers as well. The information it outputs is not even relevant, you can't properly debug stuff like this, it is just making a fucking laughing stock of us. DatZach is right, this is why we are the butt of every fucking joke.
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
|
Josh @ Dreamland
|
|
Reply #3 Posted on: August 08, 2013, 04:59:57 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Shut up, Robert. Keep shitposting like that and I'll put you in charge of the event system. Or maybe you can have Zach write it for you. If you expect my assistance, you can accept it for what it is. Otherwise, fuck you. I'll take my leave.
Anyway. That error, known colloquially as the 14-fuck exception, happens in the event of miserable iterator failure in the engine. Particularly, in the instance system. In early stages of development, this happened when destroying instances to which iterators were held. I then implemented a central tracker for iterators, and a very simple garbage collection system for destroyed instances, to prevent any such mishaps. It should never happen, unless someone changed something.
To be honest, my guess is that in cheeseboy's great belligerence, he reverted to a four-year-old revision of ENIGMA. But assuming he'd not be stupid enough to do that and then bitch when it didn't work, I'm going to need more info. The game is doing *something* to piss off the iterator system. The info you provided isn't enough, cheeseboy; I need either your game or the IDE_EDIT_object*.h files.
if (enigma::cleanups.find(a) == enigma::cleanups.end()) enigma::instance_event_iterator->inst->unlink(); if (enigma::cleanups.find(a) == enigma::cleanups.end()) printf("FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK! FUCK!\nFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCK!\nFUCK! %p ISN'T ON THE GOD DAMNED MOTHER FUCKING STACK!", (void*)a);
As you can see, that only happens if for some fucking reason, the object was told to unlink itself, but then didn't register itself properly for garbage collection. Did one of you attempt to implement something new and exciting with the instance system?
And yes, as Harri pointed out right before I posted, general memory corruption could also be at play. I might need you to run Valgrind on the game, assuming it plays well with the engine.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
Josh @ Dreamland
|
|
Reply #5 Posted on: August 08, 2013, 06:58:39 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
I'm dealing with this over IRC, forthevin. From what I gather, it is not reproducible except in his own game. It looks ugly and deep-seeded, a fact exacerbated by ENIGMA's woefully inadequate organization in the instance system, which is entirely my fault. I may have to start on my instance system refactoring plans early.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
Goombert
|
|
Reply #6 Posted on: August 08, 2013, 07:48:51 pm |
|
|
Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
I don't think it returned that before SIGSEGV, so cheer up Rob. I am sorry, it just really upsets and annoys me, because I know we are all working exceptionally hard to do a good job. Shut up, Robert. Keep shitposting like that and I'll put you in charge of the event system :/ He's is part of why I am upset, and you're not making it any better. I'm going to need more info. The game is doing *something* to piss off the iterator system. The info you provided isn't enough, cheeseboy Perhaps if you would make it print real debug errors instead of literally random shit, maybe you wouldn't have that problem.
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect.
|
|
|
Josh @ Dreamland
|
|
Reply #7 Posted on: August 08, 2013, 09:28:19 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Perhaps if you would make it print real debug errors instead of literally random shit, maybe you wouldn't have that problem. If you knew the FIRST fucking thing about this system or about anything I just said, you'd realize that there is NO useful info that can be collected. This problem should NOT happen, under any circumstance, and is indicative of memory corruption, which valgrind has pointed out. For interested parties, this is the dump of errors from valgrind here. You can disregard the leak reports; they're from the segfault.
|
|
« Last Edit: August 08, 2013, 09:32:00 pm by Josh @ Dreamland »
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
Josh @ Dreamland
|
|
Reply #8 Posted on: August 08, 2013, 09:55:28 pm |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
In other news, this bug was from a double free. The cause was two instances having the same ID, as assigned by the IDE. Both instances were assigned 100134; when the first was destroyed, it freed the rb_tree iterator for instance 100134. When the second instance was destroyed, it tried to do the same, resulting in the invalid read you see in that (incomplete) valgrind dump.
I'm going to file a bug against LGM, and tomorrow I'm going to add duplicate checking to debug mode for IDs. What a fucking bitch of an error.
I'll probably also fix the font_add new[]/delete mismatch.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
polygone
|
|
Reply #9 Posted on: August 09, 2013, 07:22:27 am |
|
|
Location: England Joined: Mar 2009
Posts: 794
|
Oh I was actually going to suggest something like that, never mind.
|
|
|
Logged
|
I honestly don't know wtf I'm talking about but hopefully I can muddle my way through.
|
|
|
|