runtime_condensed
-
25
count
-
14
count
Cannot read null.air inrelocate airs(/obj/machinery/atmospherics/components/proc/relocate_airs:381)src: External Gas to Loop (/obj/machinery/atmospherics/components/binary/pump)
src_loc: the snow (116,70,4) (/turf/open/misc/asteroid/snow/icemoon/do_not_chasm)
usr: null
-
12
count
playsound(): no soundin passed inplaysound(/proc/playsound:26)src: null
src_loc:
usr: Avery River (/mob/living/carbon/human)
-
11
count
Cannot execute null.resolve(). inCanAStarPass(/turf/open/openspace/CanAStarPass:151)src: the ice chasm (105,81,4) (/turf/open/openspace/icemoon/keep_below)
src_loc:
usr: null
-
7
count
No valid destination passed into forceMove inforceMove(/atom/movable/proc/forceMove:1121)src: the ebeam (/obj/effect/ebeam)
src_loc:
usr: Radium XXIII (/mob/living/carbon/human)
-
5
count
pick() from empty list intry create portal to(/obj/item/hand_tele/proc/try_create_portal_to:241)src: the hand tele (/obj/item/hand_tele)
src_loc:
usr: Avery River (/mob/living/carbon/human)
-
4
count
teleporter_new_target overridden. Use override = TRUE to suppress this warning. instack trace(/proc/_stack_trace:4)src: null
src_loc:
usr: Avery River (/mob/living/carbon/human)
-
4
count
area_beauty_updated overridden. Use override = TRUE to suppress this warning. instack trace(/proc/_stack_trace:4)src: null
src_loc:
usr: Avery River (/mob/living/carbon/human)
-
4
count
A client was Del()'d without a persistent_client! This should not be happening. instack trace(/proc/_stack_trace:4)src: null
src_loc:
usr: (src)
-
3
count
Cannot read null.seen_messages infinish image generation(/datum/chatmessage/proc/finish_image_generation:210)src: /datum/chatmessage (/datum/chatmessage)
src_loc:
usr: Avery River (/mob/living/carbon/human)
-
3
count
cause_hallucination was given a non-hallucination type. incause hallucination(/mob/living/proc/_cause_hallucination:45)src: the butterfly (/mob/living/basic/butterfly)
src_loc: the open space (116,187,3) (/turf/open/openspace)
usr: null
-
2
count
-
1
count
Failed to create a character for latejoin. inAttemptLateSpawn(/mob/dead/new_player/proc/AttemptLateSpawn:189)src: Thecreative8 (/mob/dead/new_player)
src_loc: the cordon (8,248,1) (/turf/cordon)
usr: (src)
-
1
count
Cannot execute null.RegisterSignal(). inupdate signals(/datum/component/connect_range/proc/update_signals:99)src: /datum/component/connect_range (/datum/component/connect_range)
src_loc:
usr: the snow legion (/mob/living/basic/mining/legion/snow)
-
1
count
bad client ininitialize(/datum/tgui_window/proc/initialize:123)src: /datum/tgui_window (/datum/tgui_window)
src_loc:
usr: null
-
1
count
Cannot execute null.UnregisterSignal(). inunregister signals(/datum/component/connect_range/proc/unregister_signals:113)src: /datum/component/connect_range (/datum/component/connect_range)
src_loc:
usr: the snow legion (/mob/living/basic/mining/legion/snow)
-
1
count
Found undeleted query, check the sql.log for the undeleted query and add a delete call to the query datum. instack trace(/proc/_stack_trace:4)src: null
src_loc:
usr: (src)
-
1
count
https://tts.scriptis.net/tts-voices: status code 503 instack trace(/proc/_stack_trace:4)src: null
src_loc:
usr: (src)
-
1
count
Attempting to create a new db query during the world shutdown inNewQuery(/datum/controller/subsystem/dbcore/proc/NewQuery:381)src: Database (/datum/controller/subsystem/dbcore)
src_loc:
usr: the butterfly (/mob/dead/observer)
-
1
count
Cannot execute null.examine(). inrun examinate(/mob/proc/run_examinate:565)src: Radium XXIII (/mob/living/carbon/human)
src_loc: the snow (121,74,3) (/turf/open/misc/asteroid/snow/icemoon)
usr: (src)
-
1
count
Qdeleted thing being thrown around. inthrow at(/atom/movable/proc/throw_at:1340)src: the banana glutton (/mob/living/basic/clown/mutant/glutton)
src_loc: null
usr: null
-
1
count
list index out of bounds inload tier list(/datum/dynamic_ruleset/proc/load_tier_list:126)src: Space Changeling (/datum/dynamic_ruleset/midround/from_ghosts/space_changeling)
src_loc:
usr: null
-
1
count
Cannot execute null.Execute(). inLogAhelp(/datum/controller/subsystem/blackbox/proc/LogAhelp:312)src: Blackbox (/datum/controller/subsystem/blackbox)
src_loc:
usr: the butterfly (/mob/dead/observer)
-
1
count
Cannot read null.pawn infield turf crossed(/datum/proximity_monitor/advanced/ai_target_tracking/field_turf_crossed:63)src: /datum/proximity_monitor/advan... (/datum/proximity_monitor/advanced/ai_target_tracking)
src_loc:
usr: the goliath (/mob/living/basic/mining/goliath)
{
"data": {
"runtimes": [
{
"count": 25,
"message": "Volume modifier 0 must be +ve",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "(src)"
},
{
"count": 14,
"message": "Cannot read null.air",
"proc_name": "relocate airs (\/obj\/machinery\/atmospherics\/components\/proc\/relocate_airs)",
"source_file": "code\/modules\/atmospherics\/machinery\/components\/components_base.dm,381",
"src": "External Gas to Loop (\/obj\/machinery\/atmospherics\/components\/binary\/pump)",
"src_loc": "the snow (116,70,4) (\/turf\/open\/misc\/asteroid\/snow\/icemoon\/do_not_chasm)",
"usr": "null"
},
{
"count": 12,
"message": "playsound(): no soundin passed",
"proc_name": "playsound (\/proc\/playsound)",
"source_file": "code\/game\/sound\/sound.dm,26",
"src": "null",
"src_loc": null,
"usr": "Avery River (\/mob\/living\/carbon\/human)"
},
{
"count": 11,
"message": "Cannot execute null.resolve().",
"proc_name": "CanAStarPass (\/turf\/open\/openspace\/CanAStarPass)",
"source_file": "code\/game\/turfs\/open\/openspace.dm,151",
"src": "the ice chasm (105,81,4) (\/turf\/open\/openspace\/icemoon\/keep_below)",
"src_loc": null,
"usr": "null"
},
{
"count": 7,
"message": "No valid destination passed into forceMove",
"proc_name": "forceMove (\/atom\/movable\/proc\/forceMove)",
"source_file": "code\/game\/atoms_movable.dm,1121",
"src": "the ebeam (\/obj\/effect\/ebeam)",
"src_loc": null,
"usr": "Radium XXIII (\/mob\/living\/carbon\/human)"
},
{
"count": 5,
"message": "pick() from empty list",
"proc_name": "try create portal to (\/obj\/item\/hand_tele\/proc\/try_create_portal_to)",
"source_file": "code\/game\/objects\/items\/teleportation.dm,241",
"src": "the hand tele (\/obj\/item\/hand_tele)",
"src_loc": null,
"usr": "Avery River (\/mob\/living\/carbon\/human)"
},
{
"count": 4,
"message": "teleporter_new_target overridden. Use override = TRUE to suppress this warning.",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "Avery River (\/mob\/living\/carbon\/human)"
},
{
"count": 4,
"message": "area_beauty_updated overridden. Use override = TRUE to suppress this warning.",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "Avery River (\/mob\/living\/carbon\/human)"
},
{
"count": 4,
"message": "A client was Del()'d without a persistent_client! This should not be happening.",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "(src)"
},
{
"count": 3,
"message": "Cannot read null.seen_messages",
"proc_name": "finish image generation (\/datum\/chatmessage\/proc\/finish_image_generation)",
"source_file": "code\/datums\/chatmessage.dm,210",
"src": "\/datum\/chatmessage (\/datum\/chatmessage)",
"src_loc": null,
"usr": "Avery River (\/mob\/living\/carbon\/human)"
},
{
"count": 3,
"message": "cause_hallucination was given a non-hallucination type.",
"proc_name": " cause hallucination (\/mob\/living\/proc\/_cause_hallucination)",
"source_file": "code\/__HELPERS\/hallucinations.dm,45",
"src": "the butterfly (\/mob\/living\/basic\/butterfly)",
"src_loc": "the open space (116,187,3) (\/turf\/open\/openspace)",
"usr": "null"
},
{
"count": 2,
"message": "Cannot read null.z",
"proc_name": "is valid z level (\/proc\/is_valid_z_level)",
"source_file": "code\/__HELPERS\/levels.dm,15",
"src": "null",
"src_loc": null,
"usr": "(src)"
},
{
"count": 1,
"message": "Failed to create a character for latejoin.",
"proc_name": "AttemptLateSpawn (\/mob\/dead\/new_player\/proc\/AttemptLateSpawn)",
"source_file": "code\/modules\/mob\/dead\/new_player\/new_player.dm,189",
"src": "Thecreative8 (\/mob\/dead\/new_player)",
"src_loc": "the cordon (8,248,1) (\/turf\/cordon)",
"usr": "(src)"
},
{
"count": 1,
"message": "Cannot execute null.RegisterSignal().",
"proc_name": "update signals (\/datum\/component\/connect_range\/proc\/update_signals)",
"source_file": "code\/datums\/components\/connect_range.dm,99",
"src": "\/datum\/component\/connect_range (\/datum\/component\/connect_range)",
"src_loc": null,
"usr": "the snow legion (\/mob\/living\/basic\/mining\/legion\/snow)"
},
{
"count": 1,
"message": "bad client",
"proc_name": "initialize (\/datum\/tgui_window\/proc\/initialize)",
"source_file": "code\/modules\/tgui\/tgui_window.dm,123",
"src": "\/datum\/tgui_window (\/datum\/tgui_window)",
"src_loc": null,
"usr": "null"
},
{
"count": 1,
"message": "Cannot execute null.UnregisterSignal().",
"proc_name": "unregister signals (\/datum\/component\/connect_range\/proc\/unregister_signals)",
"source_file": "code\/datums\/components\/connect_range.dm,113",
"src": "\/datum\/component\/connect_range (\/datum\/component\/connect_range)",
"src_loc": null,
"usr": "the snow legion (\/mob\/living\/basic\/mining\/legion\/snow)"
},
{
"count": 1,
"message": "Found undeleted query, check the sql.log for the undeleted query and add a delete call to the query datum.",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "(src)"
},
{
"count": 1,
"message": "https:\/\/tts.scriptis.net\/tts-voices: status code 503",
"proc_name": " stack trace (\/proc\/_stack_trace)",
"source_file": "code\/__HELPERS\/stack_trace.dm,4",
"src": "null",
"src_loc": null,
"usr": "(src)"
},
{
"count": 1,
"message": "Attempting to create a new db query during the world shutdown",
"proc_name": "NewQuery (\/datum\/controller\/subsystem\/dbcore\/proc\/NewQuery)",
"source_file": "code\/controllers\/subsystem\/dbcore.dm,381",
"src": "Database (\/datum\/controller\/subsystem\/dbcore)",
"src_loc": null,
"usr": "the butterfly (\/mob\/dead\/observer)"
},
{
"count": 1,
"message": "Cannot execute null.examine().",
"proc_name": "run examinate (\/mob\/proc\/run_examinate)",
"source_file": "code\/modules\/mob\/mob.dm,565",
"src": "Radium XXIII (\/mob\/living\/carbon\/human)",
"src_loc": "the snow (121,74,3) (\/turf\/open\/misc\/asteroid\/snow\/icemoon)",
"usr": "(src)"
},
{
"count": 1,
"message": "Qdeleted thing being thrown around.",
"proc_name": "throw at (\/atom\/movable\/proc\/throw_at)",
"source_file": "code\/game\/atoms_movable.dm,1340",
"src": "the banana glutton (\/mob\/living\/basic\/clown\/mutant\/glutton)",
"src_loc": "null",
"usr": "null"
},
{
"count": 1,
"message": "list index out of bounds",
"proc_name": "load tier list (\/datum\/dynamic_ruleset\/proc\/load_tier_list)",
"source_file": "code\/controllers\/subsystem\/dynamic\/_dynamic_ruleset.dm,126",
"src": "Space Changeling (\/datum\/dynamic_ruleset\/midround\/from_ghosts\/space_changeling)",
"src_loc": null,
"usr": "null"
},
{
"count": 1,
"message": "Cannot execute null.Execute().",
"proc_name": "LogAhelp (\/datum\/controller\/subsystem\/blackbox\/proc\/LogAhelp)",
"source_file": "code\/controllers\/subsystem\/blackbox.dm,312",
"src": "Blackbox (\/datum\/controller\/subsystem\/blackbox)",
"src_loc": null,
"usr": "the butterfly (\/mob\/dead\/observer)"
},
{
"count": 1,
"message": "Cannot read null.pawn",
"proc_name": "field turf crossed (\/datum\/proximity_monitor\/advanced\/ai_target_tracking\/field_turf_crossed)",
"source_file": "code\/datums\/proximity_monitor\/fields\/ai_target_tracking.dm,63",
"src": "\/datum\/proximity_monitor\/advan... (\/datum\/proximity_monitor\/advanced\/ai_target_tracking)",
"src_loc": null,
"usr": "the goliath (\/mob\/living\/basic\/mining\/goliath)"
}
],
"total_count": 106
},
"parser": null,
"id": -1,
"datetime": {
"date": "2025-09-19 08:36:05.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"round": 256153,
"key": "runtime_condensed",
"type": "generated",
"version": 1,
"json": "{\"runtimes\":[{\"count\":25,\"message\":\"Volume modifier 0 must be +ve\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"(src)\"},{\"count\":14,\"message\":\"Cannot read null.air\",\"proc_name\":\"relocate airs (\/obj\/machinery\/atmospherics\/components\/proc\/relocate_airs)\",\"source_file\":\"code\/modules\/atmospherics\/machinery\/components\/components_base.dm,381\",\"src\":\"External Gas to Loop (\/obj\/machinery\/atmospherics\/components\/binary\/pump)\",\"src_loc\":\"the snow (116,70,4) (\/turf\/open\/misc\/asteroid\/snow\/icemoon\/do_not_chasm)\",\"usr\":\"null\"},{\"count\":12,\"message\":\"playsound(): no soundin passed\",\"proc_name\":\"playsound (\/proc\/playsound)\",\"source_file\":\"code\/game\/sound\/sound.dm,26\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"Avery River (\/mob\/living\/carbon\/human)\"},{\"count\":11,\"message\":\"Cannot execute null.resolve().\",\"proc_name\":\"CanAStarPass (\/turf\/open\/openspace\/CanAStarPass)\",\"source_file\":\"code\/game\/turfs\/open\/openspace.dm,151\",\"src\":\"the ice chasm (105,81,4) (\/turf\/open\/openspace\/icemoon\/keep_below)\",\"src_loc\":null,\"usr\":\"null\"},{\"count\":7,\"message\":\"No valid destination passed into forceMove\",\"proc_name\":\"forceMove (\/atom\/movable\/proc\/forceMove)\",\"source_file\":\"code\/game\/atoms_movable.dm,1121\",\"src\":\"the ebeam (\/obj\/effect\/ebeam)\",\"src_loc\":null,\"usr\":\"Radium XXIII (\/mob\/living\/carbon\/human)\"},{\"count\":5,\"message\":\"pick() from empty list\",\"proc_name\":\"try create portal to (\/obj\/item\/hand_tele\/proc\/try_create_portal_to)\",\"source_file\":\"code\/game\/objects\/items\/teleportation.dm,241\",\"src\":\"the hand tele (\/obj\/item\/hand_tele)\",\"src_loc\":null,\"usr\":\"Avery River (\/mob\/living\/carbon\/human)\"},{\"count\":4,\"message\":\"teleporter_new_target overridden. Use override = TRUE to suppress this warning.\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"Avery River (\/mob\/living\/carbon\/human)\"},{\"count\":4,\"message\":\"area_beauty_updated overridden. Use override = TRUE to suppress this warning.\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"Avery River (\/mob\/living\/carbon\/human)\"},{\"count\":4,\"message\":\"A client was Del()'d without a persistent_client! This should not be happening.\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"(src)\"},{\"count\":3,\"message\":\"Cannot read null.seen_messages\",\"proc_name\":\"finish image generation (\/datum\/chatmessage\/proc\/finish_image_generation)\",\"source_file\":\"code\/datums\/chatmessage.dm,210\",\"src\":\"\/datum\/chatmessage (\/datum\/chatmessage)\",\"src_loc\":null,\"usr\":\"Avery River (\/mob\/living\/carbon\/human)\"},{\"count\":3,\"message\":\"cause_hallucination was given a non-hallucination type.\",\"proc_name\":\" cause hallucination (\/mob\/living\/proc\/_cause_hallucination)\",\"source_file\":\"code\/__HELPERS\/hallucinations.dm,45\",\"src\":\"the butterfly (\/mob\/living\/basic\/butterfly)\",\"src_loc\":\"the open space (116,187,3) (\/turf\/open\/openspace)\",\"usr\":\"null\"},{\"count\":2,\"message\":\"Cannot read null.z\",\"proc_name\":\"is valid z level (\/proc\/is_valid_z_level)\",\"source_file\":\"code\/__HELPERS\/levels.dm,15\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"(src)\"},{\"count\":1,\"message\":\"Failed to create a character for latejoin.\",\"proc_name\":\"AttemptLateSpawn (\/mob\/dead\/new_player\/proc\/AttemptLateSpawn)\",\"source_file\":\"code\/modules\/mob\/dead\/new_player\/new_player.dm,189\",\"src\":\"Thecreative8 (\/mob\/dead\/new_player)\",\"src_loc\":\"the cordon (8,248,1) (\/turf\/cordon)\",\"usr\":\"(src)\"},{\"count\":1,\"message\":\"Cannot execute null.RegisterSignal().\",\"proc_name\":\"update signals (\/datum\/component\/connect_range\/proc\/update_signals)\",\"source_file\":\"code\/datums\/components\/connect_range.dm,99\",\"src\":\"\/datum\/component\/connect_range (\/datum\/component\/connect_range)\",\"src_loc\":null,\"usr\":\"the snow legion (\/mob\/living\/basic\/mining\/legion\/snow)\"},{\"count\":1,\"message\":\"bad client\",\"proc_name\":\"initialize (\/datum\/tgui_window\/proc\/initialize)\",\"source_file\":\"code\/modules\/tgui\/tgui_window.dm,123\",\"src\":\"\/datum\/tgui_window (\/datum\/tgui_window)\",\"src_loc\":null,\"usr\":\"null\"},{\"count\":1,\"message\":\"Cannot execute null.UnregisterSignal().\",\"proc_name\":\"unregister signals (\/datum\/component\/connect_range\/proc\/unregister_signals)\",\"source_file\":\"code\/datums\/components\/connect_range.dm,113\",\"src\":\"\/datum\/component\/connect_range (\/datum\/component\/connect_range)\",\"src_loc\":null,\"usr\":\"the snow legion (\/mob\/living\/basic\/mining\/legion\/snow)\"},{\"count\":1,\"message\":\"Found undeleted query, check the sql.log for the undeleted query and add a delete call to the query datum.\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"(src)\"},{\"count\":1,\"message\":\"https:\/\/tts.scriptis.net\/tts-voices: status code 503\",\"proc_name\":\" stack trace (\/proc\/_stack_trace)\",\"source_file\":\"code\/__HELPERS\/stack_trace.dm,4\",\"src\":\"null\",\"src_loc\":null,\"usr\":\"(src)\"},{\"count\":1,\"message\":\"Attempting to create a new db query during the world shutdown\",\"proc_name\":\"NewQuery (\/datum\/controller\/subsystem\/dbcore\/proc\/NewQuery)\",\"source_file\":\"code\/controllers\/subsystem\/dbcore.dm,381\",\"src\":\"Database (\/datum\/controller\/subsystem\/dbcore)\",\"src_loc\":null,\"usr\":\"the butterfly (\/mob\/dead\/observer)\"},{\"count\":1,\"message\":\"Cannot execute null.examine().\",\"proc_name\":\"run examinate (\/mob\/proc\/run_examinate)\",\"source_file\":\"code\/modules\/mob\/mob.dm,565\",\"src\":\"Radium XXIII (\/mob\/living\/carbon\/human)\",\"src_loc\":\"the snow (121,74,3) (\/turf\/open\/misc\/asteroid\/snow\/icemoon)\",\"usr\":\"(src)\"},{\"count\":1,\"message\":\"Qdeleted thing being thrown around.\",\"proc_name\":\"throw at (\/atom\/movable\/proc\/throw_at)\",\"source_file\":\"code\/game\/atoms_movable.dm,1340\",\"src\":\"the banana glutton (\/mob\/living\/basic\/clown\/mutant\/glutton)\",\"src_loc\":\"null\",\"usr\":\"null\"},{\"count\":1,\"message\":\"list index out of bounds\",\"proc_name\":\"load tier list (\/datum\/dynamic_ruleset\/proc\/load_tier_list)\",\"source_file\":\"code\/controllers\/subsystem\/dynamic\/_dynamic_ruleset.dm,126\",\"src\":\"Space Changeling (\/datum\/dynamic_ruleset\/midround\/from_ghosts\/space_changeling)\",\"src_loc\":null,\"usr\":\"null\"},{\"count\":1,\"message\":\"Cannot execute null.Execute().\",\"proc_name\":\"LogAhelp (\/datum\/controller\/subsystem\/blackbox\/proc\/LogAhelp)\",\"source_file\":\"code\/controllers\/subsystem\/blackbox.dm,312\",\"src\":\"Blackbox (\/datum\/controller\/subsystem\/blackbox)\",\"src_loc\":null,\"usr\":\"the butterfly (\/mob\/dead\/observer)\"},{\"count\":1,\"message\":\"Cannot read null.pawn\",\"proc_name\":\"field turf crossed (\/datum\/proximity_monitor\/advanced\/ai_target_tracking\/field_turf_crossed)\",\"source_file\":\"code\/datums\/proximity_monitor\/fields\/ai_target_tracking.dm,63\",\"src\":\"\/datum\/proximity_monitor\/advan... (\/datum\/proximity_monitor\/advanced\/ai_target_tracking)\",\"src_loc\":null,\"usr\":\"the goliath (\/mob\/living\/basic\/mining\/goliath)\"}],\"total_count\":106}",
"originalUrl": "https:\/\/terry-logs.tgstation13.org\/2025\/09\/19\/round-256153\/runtime.condensed.json"
}
Install Gentoo