"Cannot allocate memory" - Only 250MB of RAM...?!

Domnívám se, že to bude pouze SW chyba a čekal jsem, že po úplném flash NOR se to opraví - ale jak si čtu další vlákna, opak je pravdou a právě po migraci a resetu se to rozhasí - ale pořád si myslím, že to nebude HW chyba.

Jinak jsem vlastníkem Turris Omnia, tudíž nemohu plně sloužit a proto jsem poskytl aspoň odkaz - tak pardón.

OK, díky za vysvětlení. Nevěděl jsem, co přesně z návodu odkazujete/navrhujete, a pořád jsem hledal, co mi uniklo. Každopádně díky za snahu.
Také už věřím na čistě SW problém.

Nemáte, prosím, někdo z Turrisu 1.1 uloženy ty bootovací proměnné? Tedy výstup příkazu printenv uBootu při přerušení bootu prostřednictvím sériové konzole připojené pomocí USB kabelu…?

Pánové, můžete zkontrolovat, kolik RAM hlásí vaše Turrisy? Viz můj problém Only 250MB of RAM...?

Můj Turris 1.x vidí 2GB … tak to má být, myslím :slight_smile:

1 Like

Ano, 2GB jsou správně. Ale můj Turris 1.1 po přesunu na SD kartu vidí 2GB pouze při bootu, pak už použije jen 256MB.
Proto mi teď mnoho procesů končí právě hláškou “Cannot allocate memory”. V důsledku toho nefunguje např.

  • update
  • cloud backup

A zbytek jsem ořezal na minimum, aby aspoň routování fungovalo, než se problém s pamětí vyřeší.

No a proto by mne zajímalo, kolik dostupné RAM ukazuje při běhu Turris pánům @Gorole, a @heger.m, kteří také hlásí problémy s alokací paměti…?

To bude asi můj problém. Také jsem resetoval a dělal čistou instalaci. Nefunguje mi ještě pakon a síť mi celkem vypadává. Při loginu mi to vyhazuje chybové hlášení. Jak zjišťujete v ruzných stavech velikost pamětí?

Možná hloupý dotaz, zkusil jste rozebrat router a vyndal a zase zacvaknout paměť?
Pokud jste třeba vkládal SD kartu, je potřeba paměť vyndat, třeba jde o špatný kontakt, nebo pokud máte tu možnost, zkuste paměť jinde vyzkoušet.

EDIT: kromě LuCI můžete vidět využití paměti příkazem free.

root@turris:~# free
total used free shared buffers cached
Mem: 2071500 969888 1101612 81056 13020 581204
-/+ buffers/cache: 375664 1695836
Swap: 0 0 0

Ano, velikost paměti je vidět:

  • v Luci
  • pomocí příkazu free (z konzole)

252868kB je přesně ta špatná velikost, kterou nechcete vidět.

Ohledně modulů RAM - také jsem si myslel, že jsem ho při vyndavání poškodil, ale zkusil jsem místo něj jiné dva, a chovalo se to úplně stejně.
Navíc v boot logu je vidět úspěšná detekce 2GB modulu.
Opětovným rozebíráním Turrisu a šachováním se SO-DIMMem se asi nikdo nemusí zdržovat.

Takže je to jasné, něco se nepovedlo v Turris OS, zřejmě v posledních týdnech aktualizací (dle threadu Flash systemu turris do NOR přechod na btrfs v srpnu problémy nezpůsoboval). Snad na to brzy v NICu přijdou.

Hlásím ten samý problém.
Factory reset, přechod na BTRFS, problémy :frowning:
Tur_10

JEŠTĚ BY BYLO FAJN TO PŘESUNOUT DO SW PROBLEMS

1 Like

Mám ho rozdělaný celou dobu. Vyjmutí několikrat.

1 Like

Podařilo se nám to zreprodukovat a problém velmi intenzivně řešíme. Jakmile budu mít více informací, tak dám vědět.

2 Likes

Děkuji bylo by to fajn.

Michalovi (@miska) se podařilo chybě domluvit. S chybou jste se mohli setkat pouze tehdy, když jste v nejnovějším releasu tedy 3.11.2 přecházeli na BTRFS. Oprava se bude nacházet ve verzi Turris OS 3.11.3.

V tuto chvíli je potřeba překonfigurovat konfiguraci u-bootu, kterou lze provést i přes SSH, takže není nutné připojit sériovou linku, kterou provedete následujícími příkazy:

fw_setenv bootcmd 'env default -f -a; saveenv; reset'
reboot
pkgupdate
btrfs_migrate restore

Budeme rádi, když nám dáte vědět, že vám to pomohlo i přesto, že jsme to otestovali.

4 Likes

Funguje! Velmi děkuji!
Jestli to dobře chápu, tak příkazy zresetují boot proměnné, čimž se nabootuje zpět z interní paměti a máme již plnou RAM. Při updatu asi přijde opravený migrační skript (nebo oprava skriptu nebyla potřeba, stačilo jen to promazání?), jehož zavolání s přepínačem restore provede jen úpravu boot proměnných, tedy především přepnutí na bootování z SD (bez opětovné migrace systému na SD).
Tím jsme tedy ve stavu, kdy běžíme z interní paměti (tedy starého systému, ale updatovali jsme ho), a příští reboot už půjde z SD, ale tam zase bude chybět update (dokud se neprovede automaticky).
Takže já jsem přidal ještě

reboot
pkgupdate

Mohu potvrdit, že i z SD už Turris naběhne s plnou RAM 2GB, update už se povedl.
Ještě mi tedy nefunguje Foris, i když při běhu z interní paměti fungoval. Stále tam mám chybu - viz AttributeError("'ForisState' object has no attribute 'password_set'",) (kde zatím není žádné řešení). Zkusím se na to podívat.

Ještě jedou díky: @Pepe, @miska

Edit: Foris vyřešen, moje blbost - zakázal jsem si foris-controller, protože při nedostatku paměti padal a zůstávaly po něm v paměti procesy

Skvělá práce, funguje to.

Ale ještě mi to vyhodilo hlášku po 2. restartu

UPDATE:
Další hláška:

Jak jsi povolil foris-controller?

Pomohlo to. Ještě testuji.

V LuCI: System/Startup (nevím, jak je to označené česky), a tam je jedna ze servis foris-controller - tlačítko vedle indikuje, jestli je povolena nebo zakázána, případně se to stiskem dá přepnout (dál jsou tlačítka Start, Restart, Stop, takže třeba po povolení je třeba stisknout Start, jinak se rozeběhne až po rebootu routeru).

Ahoj,

jsem na stejne chybe:

AttributeError("'ForisState' object has no attribute 'password_set'",)
Stack trace

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/foris/backend.py", line 85, in perform
    module, action, data, controller_id=controller_id or self.controller_id
  File "/usr/lib/python3.6/site-packages/foris_client/buses/ubus.py", line 127, in send
    self._raise_exception_on_error(response)
  File "/usr/lib/python3.6/site-packages/foris_client/buses/base.py", line 69, in _raise_exception_on_error
    raise generate_controller_error(msg["module"], msg["action"])(msg["errors"])
foris_client.buses.base.ControllerError__web__get_data: Controller error(s) has occured:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/foris_controller/message_router.py", line 117, in process_message
    data = module_instance.perform_action(message["action"], message.get("data", {}))
  File "/usr/lib/python3.6/site-packages/foris_controller/module_base.py", line 61, in perform_action
    res = action_function(data)
  File "/usr/lib/python3.6/site-packages/foris_controller_modules/web/__init__.py", line 36, in action_get_data
    return self.handler.get_data()
  File "/usr/lib/python3.6/site-packages/foris_controller/utils.py", line 112, in inner
    res = func(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/foris_controller_modules/web/handlers/openwrt.py", line 79, in get_data
    data = self.web_uci_cmds.get_data()
  File "/usr/lib/python3.6/site-packages/foris_controller_backends/web/__init__.py", line 144, in get_data
    data = backend.read("foris")
  File "/usr/lib/python3.6/site-packages/foris_controller_backends/uci/__init__.py", line 332, in read
    output = self.export_data(config)
  File "/usr/lib/python3.6/site-packages/foris_controller_backends/uci/__init__.py", line 338, in export_data
    self._run_uci_command("export", config) if config else self._run_uci_command("export")
  File "/usr/lib/python3.6/site-packages/foris_controller_backends/uci/__init__.py", line 173, in _run_uci_command
    raise UciException(cmdline_args, stderr)
foris_controller.exceptions.UciException: ['uci', '-n', '-c', '/etc/config/', '-P', '/tmp/.uci-foris-controller', 'export', 'foris']: command failed (b'uci: Parse error (too many arguments) at line 18, byte 28\n')

Internal error [‘uci’, ‘-n’, ‘-c’, ‘/etc/config/’, ‘-P’, ‘/tmp/.uci-foris-controller’, ‘export’, ‘foris’]: command failed (b’uci: Parse error (too many arguments) at line 18, byte 28\n’)(’<class ‘foris_controller.exceptions.UciException’>’)

Postupoval jsem podle druheho prispevku:

fw_setenv bootcmd 'env default -f -a; saveenv; reset'
reboot
pkgupdate
btrfs_migrate restore

Pakrestart , ale foris porad nejde. Vi nekdo dalsi postup?

Diky