daemon: enable multithread logging in main()

It may happen that multiple threads trying to log at the same time,
and the msgb containing a logging message gets corrupted in
libosmocore's _file_wq_write_cb():

  msgb(0x7f5ca2a38150): msgb too small to pull 240 (len 120)
  Aborted (core dumped)

'''
  rc = write(ofd->fd, msgb_data(msg), msgb_length(msg));
  if (rc < 0)
      return rc;
  if (rc != msgb_length(msg)) { // 240 != 120
      /* pull the number of bytes we have already written */
      msgb_pull(msg, rc); // <-- we abort() here
      /* ask write_queue to re-insert the msgb at the head of the queue */
      return -EAGAIN;
  }
'''

The return value of write() cannot be greater than the given length.
Most likely, the msgb gets corrupted during the write() system call.

Enabling multithread logging in libosmocore solves the problem.

Change-Id: Ib14d0e36e8cd72465bfe55d19b68dbe3423f7f05
Related: SYS#5602
Fixes: OS#5424
1 file changed
tree: 8c82f1683305e61b87f4b048208ba2ba1edddc7e
  1. contrib/
  2. daemon/
  3. debian/
  4. doc/
  5. ttcn3/
  6. .gitignore
  7. configure.ac
  8. git-version-gen
  9. Makefile.am
  10. README.md
README.md

osmo-uecups - Osmocom UE simulation control/user plane separation

This repository contains a C-language implementation of a simulator for the SGW/MME/UE side of GTP-U. It is part of the Osmocom Open Source Mobile Communications project.

This code is primarily intended to be used in testing of 2G/3G/4G GGSN and P-GW.

Every GTP tunnel (corresponding to a PDP context or EPC bearer) is terminated in a local 'tun' device, which in turn is put into its own network namespace.

This means you can simulate any number of users / sessions / bearers on a single machine without any routing nightmare.

The code only implements the user plane (GTP1U), and not the control plane like GTP1C or GTP2C. osmo-uecups-daemon exposes a JSON-over-SCTP protocol calleD UECUPS, which allows any external control plane instance to add/remove tunnels in the daemon

Homepage

The official homepage of the project is https://osmocom.org/projects/osmo-ggsn/wiki/osmo-uecups

GIT Repository

You can clone from the official osmo-bts.git repository using

git clone git://git.osmocom.org/osmo-uecups.git

There is a cgit interface at httsp://git.osmocom.org/osmo-uecups/

Documentation

FIXME

Mailing List

Discussions related to this software are happening on the osmocom-net-gprs@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/osmocom-net-gprs for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for osmo-bts can be seen at https://gerrit.osmocom.org/#/q/project:osmo-uecups+status:open