Bug 1132650

Summary: yast loops until I add some swap space on 1 GB RAM machine
Product: [openSUSE] openSUSE Distribution Reporter: Per Jessen <per>
Component: YaST2Assignee: Ladislav Slezák <lslezak>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P3 - Medium CC: arvidjaar, dgonzalez, fcrozat, jgonzalez, jsrain, lnussel, lpechacek, lubos.kocman, mnowak, per, schubi
Version: Leap 15.1   
Target Milestone: ---   
Hardware: Other   
OS: Other   
URL: https://trello.com/c/ZioOadlI
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2log from Fujitsu Siemens Lifebook S7110 with 1GiB of mem
y2log
y2log with Y2DEBUG=1

Description Per Jessen 2019-04-16 11:49:23 UTC
Hardware - new box for mythTV - "gaston".
Installing over pxe+ssh+http from local mirror, after I say Yes to add additional repos, and choose to install <server>, yast just loops until I add some swap space.  (maybe swap space could be detected and added automagically).
Comment 1 David Diaz 2019-04-16 16:19:36 UTC
Hi Per, 

Please, collect the YaST logs executing `save_y2logs` and attach them here. They provide useful information to ease to understand the problem.

Thanks.
Comment 2 Per Jessen 2019-04-16 19:18:47 UTC
See attachment#803074 [details]

I don't think there is much to see, all I observed was a loop. I did an strace too, no calls.  Easy to reproduce though.
Comment 3 Ludwig Nussel 2019-04-17 07:58:09 UTC
how much ram does the machine have? Maybe we need to increase the minimal requirements
Comment 4 David Diaz 2019-04-17 09:48:09 UTC
(In reply to Ludwig Nussel from comment #3)
> how much ram does the machine have? 

From the logs, it seems to have 1Gb

> 111:[    0.000000] Memory: 978108K/1038904K available (10256K kernel code, 1469K rwdata, 3476K rodata, 2092K init, 9888K bss, 60796K reserved, 0K cma-reserved)
Comment 5 David Diaz 2019-04-17 09:52:16 UTC
(In reply to Per Jessen from comment #2)
> See attachment#803074 [details]
> 
> I don't think there is much to see, 

As you can see in the comment above, always there is something to see ;)

> Easy to reproduce though.

I disagree. A couple of times, I tried to reproduce some reported bugs following the exact steps given by the reporter without success. Believe me, logs usually help. That's the reason why they are there :)

Thanks.
Comment 6 Stefan Schubert 2019-04-17 13:47:49 UTC
I can reproduce this bug with 1Gb Ram. It is working with 2Gb.
 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                      
 3700 root      20   0 1176132 461052  68512 R 27.33 23.22   0:45.70 y2start                                                                      
 3745 root      20   0  104756  31404  11328 S 0.000 1.582   0:00.18 ag_udev_persist                                                              
 4272 root      20   0   46684  18840   4328 S 0.000 0.949   0:00.37 ag_anyxml                                                                    
    1 root      20   0   91872  17768   9024 S 0.000 0.895   0:06.59 init                                                                         
 1889 root      20   0   91872  10584   1840 S 0.000 0.533   0:00.00 init           

Ludwig do you know the minimal requirements ?
I have tested openSUSE-Leap-15.1-DVD-x86_64-Build451.2-Media.iso
Comment 7 Stefan Hundhammer 2019-04-18 09:58:48 UTC
Hardware requirements are constantly increasing. Much of that is the consequence of all kinds of subsystems requiring more and more resources, and YaST is always at the very end of the food chain; it has to make do with however much RAM is left. We've seen this many times before.

I am not sure exactly how much we can do about this.

Please be aware that for the installation, much of the system that is booted from DVD or from a USB stick is actually unpacked into a RAM disk which of course increases RAM usage. If you use a NET ISO, this increases because the installation medium does not provide many files, so they have to be fetched over the network and put into temporary storage on the RAM disk as well.

If you tried such a NET ISO, you might be more successful with a full ISO that contains more files directly, so it needs less temporary storage on the RAM disk.

Other than that, it might really be time to increase the minimum memory requirements. Sorry.

As mentioned, YaST can only partly be held responsible for that; the kernel and all kinds of subsystems already consume a lot of RAM before YaST even starts.
Comment 8 Per Jessen 2019-04-18 11:18:46 UTC
(In reply to David Diaz from comment #5)
> (In reply to Per Jessen from comment #2)
> > See attachment#803074 [details]
> > 
> > I don't think there is much to see, 
> 
> As you can see in the comment above, always there is something to see ;)
> 
> > Easy to reproduce though.
> 
> I disagree. A couple of times, I tried to reproduce some reported bugs

I meant it was easy to reproduce here.  Happened at least twice until I realised it was running out of memory and needed swap.
Comment 9 Per Jessen 2019-04-18 11:20:28 UTC
(In reply to Ludwig Nussel from comment #3)
> how much ram does the machine have? Maybe we need to increase the minimal
> requirements

As others have already added, it has 1Gb.
Comment 10 Per Jessen 2019-04-18 11:27:44 UTC
(In reply to Stefan Hundhammer from comment #7)
> Hardware requirements are constantly increasing. Much of that is the
> consequence of all kinds of subsystems requiring more and more resources,
> and YaST is always at the very end of the food chain; it has to make do with
> however much RAM is left. We've seen this many times before.

Nonetheless, once installed, openSUSE runs fine in 512M on my ARM boards, or on a RaspBerry Pi. 

> I am not sure exactly how much we can do about this.

I guess it's not possible (or desirable) to add any swap space found? 
linuxrc has an "addswap" parameter, so it sounds like it is possible at least.
Comment 11 Stefan Hundhammer 2019-04-18 12:27:11 UTC
You have to activate any pre-existing swap space manually; that's what that linuxrc options does. We don't always just activate any swap space that we find because you might want to re-partition the disk.

Maybe (not sure) it is activated if your available RAM is below the minimum requirements, but those requirements right now are 1 GB, so that wouldn't apply in your case.

Docs (I guess you already found them):

  https://en.opensuse.org/SDB:Linuxrc
Comment 12 Stefan Schubert 2019-04-18 14:47:34 UTC
I think the main problem is here that we do not really inform the user that his machine does not have enough memory. In that case YaST is running in an unstable state. Of course it is quite hard to define this because memory allocation depends an many factors (e.g. repo sizes).
So how to go on here
- Simply increasing the memory requirements
- Evaluate if we can decrease memory usage "somehow".
Jiri, what do you think ?
Comment 13 Jiri Srain 2019-04-23 06:17:37 UTC
There is one thing not said explicitly in this bugreport: The RAM requirement depends on the install media. In this case, it was installed via HTTP, which - as any other medias which cannot be mounted - just increases the RAM requirement by the size of the installation system.

If the same system was installed from DVD, USB stick, NFS, Samba - it could be successful.

That said: Maybe we should increase the requirement depending on the installation media (and possibly also on whether NCurses or Qt is being used)?


Of course, if we identify who is consuming too much memory, we should ask the respective developer to address that too. But there is not always possible to point to just one component.
Comment 14 Stefan Schubert 2019-04-23 07:24:23 UTC
(In reply to Jiri Srain from comment #13)
> There is one thing not said explicitly in this bugreport: The RAM
> requirement depends on the install media. In this case, it was installed via
> HTTP, which - as any other medias which cannot be mounted - just increases
> the RAM requirement by the size of the installation system.
> 
> If the same system was installed from DVD, USB stick, NFS, Samba - it could
> be successful.
> 
> That said: Maybe we should increase the requirement depending on the
> installation media (and possibly also on whether NCurses or Qt is being
> used)?
> 
> 
> Of course, if we identify who is consuming too much memory, we should ask
> the respective developer to address that too. But there is not always
> possible to point to just one component.

Thanks Jiri. So the main problem is that we do not know how much memory we need because this depends on the install media. The memory will be used while parsing the package information. Would it be possible that libzypp is throwing an exception while parsing this information if there is no more memory available ? Then YaST could then inform the user at least.
Assigning to libzypp team. Perhaps they have a solution for it :-)
Comment 15 Michael Andres 2019-04-23 09:51:00 UTC
@Schubi, please help me. Where do you see or suspect a loop or error condition zypp could have reported? I can't spot the problem in the log.
Comment 16 Andrei Borzenkov 2019-04-23 17:53:20 UTC
(In reply to Michael Andres from comment #15)
> @Schubi, please help me. Where do you see or suspect a loop or error
> condition zypp could have reported? I can't spot the problem in the log.

I posted some details earlier on factory list:

https://lists.opensuse.org/opensuse-factory/2019-03/msg00326.html
Comment 17 Stefan Schubert 2019-04-24 08:03:07 UTC
(In reply to Michael Andres from comment #15)
> @Schubi, please help me. Where do you see or suspect a loop or error
> condition zypp could have reported? I can't spot the problem in the log.

I have reproduced the "error", but without any "loop". The process has hanged while parsing the repos. It has not hanged when I have increased the memory.
Comment 18 Per Jessen 2019-04-24 09:24:41 UTC
(In reply to Stefan Schubert from comment #17)
> (In reply to Michael Andres from comment #15)
> > @Schubi, please help me. Where do you see or suspect a loop or error
> > condition zypp could have reported? I can't spot the problem in the log.
> 
> I have reproduced the "error", but without any "loop". The process has
> hanged while parsing the repos. It has not hanged when I have increased the
> memory.

What I observed was a yast process running at high cpu% (less than 80), but not doing much (I straced it, no calls).  As soon as I added swap, it started working.
Comment 19 Michael Andres 2019-04-25 09:41:10 UTC
(In reply to Stefan Schubert from comment #17)
> (In reply to Michael Andres from comment #15)
> > @Schubi, please help me. Where do you see or suspect a loop or error
> > condition zypp could have reported? I can't spot the problem in the log.
> 
> I have reproduced the "error", but without any "loop". The process has
> hanged while parsing the repos. It has not hanged when I have increased the
> memory.

If you're able to reproduce it, could you please add the logs.
Comment 20 Libor Pechacek 2019-04-29 13:32:33 UTC
Created attachment 803825 [details]
y2log from Fujitsu Siemens Lifebook S7110 with 1GiB of mem

I saw the same behavior as described in comment #0 on Fujitsu Siemens Lifebook S7110 with 1GiB of memory. I tried Leap 15.0, 15.1 and Tumbleweed with HTTP installation without success. Only on the last attempt I took y2log snapshot while installer was still looping. I'm attaching the corresponding log.
Comment 21 Ludwig Nussel 2019-04-29 13:46:52 UTC
So I guess all boils down to just increase LOW_MEMORY_MIB in https://github.com/yast/yast-packager/blob/acc6dbfd155d827a2c8f02f42df2fec2888b6572/src/lib/y2packager/clients/inst_productsources.rb#L97 to 1.5GB. Maybe it would make sense to put that setting into control.xml to make it easier to find.
Comment 22 Stefan Schubert 2019-05-03 12:03:21 UTC
Created attachment 804126 [details]
y2log

It is still reproduce able.
Comment 23 Stefan Schubert 2019-05-03 12:12:11 UTC
Created attachment 804128 [details]
y2log with Y2DEBUG=1

more logging
Comment 24 Michael Andres 2019-05-03 13:42:15 UTC
(In reply to Stefan Schubert from comment #22)
> 
> It is still reproduce able.

But how should libyzpp help here? All logs (c#20-#23) show libyzpp being able to load all reops, iterate the repos and even able to run the resolver, without indication of any memory related problem. 

All logs end with
> [Pkg] modules/Packages.rb:824 Pkg Builtin called: ResolvableProperties

This is AFAIK the place where yast-pkg-bindings try to build up YCPLists with resolvable attributes. 

AFAIR there've been reports in the past that those lists are too big (as they may contain almost all resolvable attributes and not just what the caller actually needs). 

Sorry, but currently I see no hint on how libyzpp could help here. I'd suggest to figure out first what the yast-pkg-bindings are expected to deliver back to the ruby code. Maybe it's simply too much.

Back to YAST.
Comment 25 Stefan Schubert 2019-05-06 07:35:28 UTC
(In reply to Michael Andres from comment #24)
> This is AFAIK the place where yast-pkg-bindings try to build up YCPLists
> with resolvable attributes. 
> 
> AFAIR there've been reports in the past that those lists are too big (as
> they may contain almost all resolvable attributes and not just what the
> caller actually needs). 
> 
Ok, that's a point for "investigation". Added to Trello.
Comment 27 Ladislav Slezák 2019-05-10 07:57:43 UTC
Fixed in yast2-packager-4.1.41 (https://github.com/yast/yast-packager/pull/434)

SLE15-SP1 submission: https://build.suse.de/request/show/192319

(This possibly also affects the SLE15-SP1 installer when using too many modules/extensions.)
Comment 28 Ludwig Nussel 2019-05-10 08:17:16 UTC
The code change makes me nervous for Leap. There is no buffer for mistakes left. So I'd rather prefer increasing the requirement as explained in comment#21 for Leap. The code is different from SLE there anyways. For Leap it would only change the wording of the dialog.
Comment 29 Frederic Crozat 2019-05-10 08:57:10 UTC
(In reply to Ludwig Nussel from comment #28)
> The code change makes me nervous for Leap. There is no buffer for mistakes
> left. So I'd rather prefer increasing the requirement as explained in
> comment#21 for Leap. The code is different from SLE there anyways. For Leap
> it would only change the wording of the dialog.

Understood. I'll reject for SUSE:SLE-15-SP1:GA, we should manage it as installer update instead.
Comment 30 Ladislav Slezák 2019-05-10 13:02:21 UTC
OK, I have reverted the fix, instead I updated the memory limit for displaying a warning popup as suggested by Ludwig.

https://github.com/yast/yast-packager/pull/435

This change affects only Leap, that code is used only in the Leap installer (https://github.com/yast/skelcd-control-openSUSE/blob/openSUSE-15_1/control/control.openSUSE.xml#L908), the SLE installer is not affected.
Comment 32 Swamp Workflow Management 2019-05-10 13:30:07 UTC
This is an autogenerated message for OBS integration:
This bug (1132650) was mentioned in
https://build.opensuse.org/request/show/701993 15.1 / yast2-packager
Comment 33 Ladislav Slezák 2019-05-13 08:13:49 UTC
*** Bug 1134758 has been marked as a duplicate of this bug. ***
Comment 34 Michal Nowak 2019-05-14 13:17:55 UTC
*** Bug 1129619 has been marked as a duplicate of this bug. ***
Comment 36 Stefan Schubert 2019-12-05 09:26:33 UTC
*** Bug 1158097 has been marked as a duplicate of this bug. ***
Comment 38 Swamp Workflow Management 2020-02-04 17:13:53 UTC
SUSE-RU-2020:0313-1: An update that has four recommended fixes can now be installed.

Category: recommended (moderate)
Bug References: 1132650,1157202,1158247,1159120
CVE References: 
Sources used:
SUSE Linux Enterprise Software Development Kit 12-SP5 (src):    yast2-pkg-bindings-devel-doc-3.2.8-3.3.1
SUSE Linux Enterprise Server Installer 12-SP5 (src):    yast2-pkg-bindings-3.2.8-3.3.1
SUSE Linux Enterprise Server 12-SP5 (src):    yast2-pkg-bindings-3.2.8-3.3.1

NOTE: This line indicates an update has been released for the listed product(s). At times this might be only a partial fix. If you have questions please reach out to maintenance coordination.
Comment 39 OBSbugzilla Bot 2020-10-27 10:06:42 UTC
This is an autogenerated message for OBS integration:
This bug (1132650) was mentioned in
https://build.opensuse.org/request/show/844234 Factory / yast2-registration