FreeBSD in VirtualBox: Programme stürzen ab, starten gar nicht erst oder haben Ein-Ausgabe-Fehler

Morfio

Well-Known Member
Hallo zusammen,

ich habe VirtualBox auf Windows 10 Professional. Darin ist ein FreeBSD 11.1p1 amd64 installiert. Installiert habe ich XFCE sowie Firefox und Chromium.

Wenn ich versuche, z.B. das Terminal von XFCE zu starten, kommt der Fehler

Ein-/Ausgabefehler

Firefox stürzt mit einem SegFault ab, Chromium bringt den Fehler:

not implemented reached in bool base:debug::(anonymous namespace)::SandboxSymbolizeHelper::CacheMemoryRegion()

Hat jemand eine Idee, woran das liegen könnte? Programme wie xterm und xclock laufen, XFCE läuft auch.

Viele Grüße

Morfio
 
Kurz grundlegend:
- RAM ist ausreichend?
- Partitionen zu klein fällt auch weg?
Kein swap und zuwenig RAM oder ein zu kleines /home wäre so ein fixer Gedanke meinerseits

Sind denke ich auch alle via pkg Tool installiert?
 
- RAM ist ausreichend?

4GB sind zugewiesen, 120MB werden in etwa benutzt

- Partitionen zu klein fällt auch weg?

Ist nur /, da ein Testsystem, und hat noch 34GB frei.

swap hat 2,5GB.

Sind denke ich auch alle via pkg Tool installiert?

Ja, aus meinem poudriere. Die Packages nutze ich aber auch auf etlichen physikalischen Systemen, die funktionieren dort bisher einwandfrei.
 
Hast du dynamisch wachsenden Festspeicher definiert? Das hat bei mir in der Vergangenheit zu Problemen geführt.
 
Hmm, es scheint an den Paketen in meinem Poudriere zu liegen, mit den offiziellen Paketen funktioniert es. Warum, kann ich nicht sagen, da ich die Pakete auf zwei Rechnern jeden Tag nutze, allerdings mit KDE und nicht mit XFCE. Unter Umständen wird da noch irgendwas mitgezogen, was bei der XFCE-Installation nicht mitgezogen wird. Ich bin ein wenig ratlos. Oder heute waren zufällig irgendwelche Pakete defekt. Es findet gerade ein neuer Poudriere-Lauf statt.
 
Hast du die Pakete vielleicht mit obskuren Flags in der make.conf gebaut? Mit falscher CPU-Optimierung oder so?
 
Hast du die Pakete vielleicht mit obskuren Flags in der make.conf gebaut? Mit falscher CPU-Optimierung oder so?

Eigentlich nicht, hier ist die make.conf:

Code:
FORCE_MAKE_JOBS=yes
MAKE_JOBS_NUMBER=8
CUPS_OVERWRITE_BASE=yes
NO_LPR=yes
WITH_CUPS=yes
WITH_GTK2=yes
PAGE=A4
PAPERSIZE=a4
A4=yes
WITH_VIM_OPTIONS=yes
DISABLE_LICENSES=yes
WANT_OPENLDAP_SASL=yes
 
Ich hatte jetzt einmal probiert, alles neu zu bauen mit bulk -c, da kamen aber die selben Probleme bei heraus. Ich habe jetzt das Jail gelöscht und neu installiert und lasse das jetzt einmal durchlaufen. In zwei Tagen müsste das durch sein, dann kann ich mehr dazu sagen.
 
Interessant: auf "echter" Hardware treten die Probleme nicht auf, sehr wohl aber unter VirtualBox. Hat vielleicht jemand eine Idee?
 
VirtualBox hat eine Option zur Speicherdeduplizierung. Also das in mehreren VMs gleiche Daten nur einmal im Speicher des Hosts gehalten werden. Ich weiß leider nicht mehr, wie sie heißt. Aber sie hatte unter FreeBSD immer interessante Nebenwirkungen.
 
Kannst du mal bitte deine poudriere.conf, make.conf wie auch deine verwendeten Kommandos posten?
 
make.conf:

Code:
FORCE_MAKE_JOBS=yes
MAKE_JOBS_NUMBER=8
CUPS_OVERWRITE_BASE=yes
NO_LPR=yes
WITH_CUPS=yes
PAGE=A4
PAPERSIZE=a4
A4=yes
WITH_VIM_OPTIONS=yes
DISABLE_LICENSES=yes
WANT_OPENLDAP_SASL=yes

poudriere.conf:

Code:
# Poudriere can optionally use ZFS for its ports/jail storage. For
# ZFS define ZPOOL, otherwise set NO_ZFS=yes
#
#### ZFS
# The pool where poudriere will create all the filesystems it needs
# poudriere will use tank/${ZROOTFS} as its root
#
# You need at least 7GB of free space in this pool to have a working
# poudriere.
#
ZPOOL=zroot

### NO ZFS
# To not use ZFS, define NO_ZFS=yes
#NO_ZFS=yes

# root of the poudriere zfs filesystem, by default /poudriere
ZROOTFS=/server/poudriere

# the host where to download sets  for the jails setup
# You can specify here a host or an IP
# replace _PROTO_ by http or ftp
# replace _CHANGE_THIS_ by the hostname of the mirrors where you want to fetch
# by default: ftp://ftp.freebsd.org
#
# Also not that every protocols supported by fetch(1) are supported here, even
# file:///
#FREEBSD_HOST=http://ftp.ch.freebsd.org
FREEBSD_HOST=ftp://ftp2.de.FreeBSD.org

# By default the jails have no /etc/resolv.conf, you will need to set
# REVOLV_CONF to a file on your hosts system that will be copied has
# /etc/resolv.conf for the jail, except if you don't need it (using an http
# proxy for example)
RESOLV_CONF=/etc/resolv.conf

# The directory where poudriere will store jails and ports
BASEFS=/server/poudriere

# The directory where the jail will store the packages and logs
# by default a zfs filesystem will be created and set to
# ${BASEFS}/data
#
#POUDRIERE_DATA=${BASEFS}/data

# Use portlint to check ports sanity
USE_PORTLINT=no

# When building packages, a memory device can be used to speedup the build.
# Only one of MFSSIZE or USE_TMPFS is supported. TMPFS is generally faster
# and will expand to the needed amount of RAM. MFS is a bit slower, but is
# more mature and can have its memory usage capped.

# If set WRKDIRPREFIX will be mdmfs of the given size (mM or gG)
#MFSSIZE=4G

# Use tmpfs(5)
# This can be a space-separated list of options:
# wrkdir    - Use tmpfs(5) for port building WRKDIRPREFIX
# data      - Use tmpfs(5) for poudriere cache/temp build data
# localbase - Use tmpfs(5) for LOCALBASE (installing ports for packaging/testing)
# all       - Run the entire build in memory, including builder jails.
# yes       - Only enables tmpfs(5) for wrkdir
# EXAMPLE: USE_TMPFS="wrkdir data"
USE_TMPFS=no

# If set the given directory will be used for the distfiles this allow the share
# the distfiles between jails and ports tree
DISTFILES_CACHE=/server/poudriere/distfiles

# If set the ports or source tree marked to use csup method will use the defined mirror
# Note: csup is deprecated. Use svn instead.
#CSUP_HOST=cvsup._CHANGE_THIS_.freebsd.org

# If set the ports tree or source tree marked to use svn will use the defined
# mirror (default: svn0.us-west.FreeBSD.org)
# The full mirror list is available here:
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/svn-mirrors.html
#SVN_HOST=svn0.us-west.FreeBSD.org

# Automatic OPTION change detection
# When bulk building packages, compare the options from kept packages to
# the current options to be built. If they differ, the existing package
# will be deleted and the port will be rebuilt.
# Valid options: yes, no, verbose
# verbose will display the old and new options
CHECK_CHANGED_OPTIONS=verbose

# Automatic Dependency change detection
# When bulk building packages, compare the dependencies from kept packages to
# the current dependencies for every port. If they differ, the existing package
# will be deleted and the port will be rebuilt. This helps catch changes such
# as DEFAULT_RUBY_VERSION, PERL_VERSION, WITHOUT_X11 that change dependencies
# for many ports.
# Valid options: yes, no
CHECK_CHANGED_DEPS=yes


# Path to the RSA key to sign the PKGNG repo with. See pkg-repo(8)
#PKG_REPO_SIGNING_KEY=/etc/ssl/keys/repo.key


# ccache support. Supply the path to your ccache cache directory.
# It will be mounted into the jail and be shared among all jails.
#CCACHE_DIR=/storage/poudriere/ccache
#

# parallel build support.
#
# By default poudriere uses hw.ncpu to determine the number of builders.
# You can override this default by changing PARALLEL_JOBS here, or
# by specifying the -J flag to bulk/testport.
#
# Example to define PARALLEL_JOBS to one single job
PARALLEL_JOBS=2


# If set, failed builds will save the WRKDIR to ${POUDRIERE_DATA}/wrkdirs
# SAVE_WRKDIR=yes

# Choose the default format for the workdir packing: could be tar,tgz,tbz,txz
# default is tbz
WRKDIR_ARCHIVE_FORMAT=txz

# Disable linux support
NOLINUX=no


# by default poudriere set PACKAGE_BUILDING
# to disable it:
# NO_PACKAGE_BUILDING=yes

# If you are using a proxy define it here:
# export HTTP_PROXY=bla
# export FTP_PROXY=bla
#
# Cleanout the restricted packages
# NO_RESTRICTED=yes

# By default MAKE_JOBS is disabled to allow only one process per cpu
# Use the following to allow it anyway
# ALLOW_MAKE_JOBS=yes


# Define as the URL that your POUDRIERE_DATA/logs is hosted at
# This will be used for giving URL hints to the HTML output when
# scheduling and starting builds
#URL_BASE=http://yourdomain.com/poudriere/


# This defines the max time (in seconds) that a command may run for a build
# before it is killed for taking too long. Default: 86400
#MAX_EXECUTION_TIME=86400

# This defines the how long (in seconds) before a command is considered to
# be in a runaway state for having no output on stdout. Default: 7200
#NOHANG_TIME=7200

Zeile zum Bauen:

Code:
poudriere ports -u
poudriere jail -u -j "11_1-amd64-client"
poudriere bulk -f "/usr/local/etc/poudriere.d/11_1-amd64-client-ports.conf" -j "11_1-amd64-client"
 
Also ich sehe da mehrere Sachen, welche du überprüfen und auch anpassen kannst.

1) Wenn du eine neue Version von poudriere installierst, solltest du deine poudriere.conf immer mit poudriere.conf.sample vergleichen und die Neuerungen übernehmen. Das kannst du am einfachsten mit vimdiff machen:
Code:
vimdiff poudriere.conf poudriere.conf.sample

2) Deiner make.conf traue ich nicht und ich würde sie anpassen: "FORCE_MAKE_JOBS, MAKE_JOBS_NUMBER" komplett löschen. Dafür gibt es eigene Optionen in der poudriere.conf (Siehe unten). Ich habe folgendes noch in meiner make.conf:
Code:
OPTIMIZED_CFLAGS=YES
BUILD_OPTIMIZED=YES
WITH_CPUFLAGS=YES
WITH_OPTIMIZED_CFLAGS=YES

3) Änderungen an deiner poudriere.conf Datei:
  • USE_TMPFS=yes
    • Einschlaten bringt einen kleinen Vorteil
  • CCACHE_DIR=/storage/ccache
    • Bringt wohl am meisten bei allen Verbesserungen
  • #PARALLEL_JOBS=2
    • Dies würde ich Poudriere selber entscheiden lassen und kommentieren
  • NOLINUX=yes
    • Brauchst du Linux?
  • ALLOW_MAKE_JOBS_PACKAGES="pkg samba* py*"
    • Bei diesen Paketen wird "MAKE_JOBS" verwendet. Hier z.B. bei pkg Samba und allem was mit py beginnt.
Ja... sonst fällt mir auch nicht mehr viel ein.

Gruss
 
Zurück
Oben