Dropbox won't start any more

Hi all,

Using Tumbleweed (completely zypper dupped on 04.11.2017) with KDE. Repos:


# | Alias                               | Name                        | Enabled | GPG Check | Refresh
--+-------------------------------------+-----------------------------+---------+-----------+--------
1 | http-download.opensuse.org-8c9a3a26 | openSUSE-Tumbleweed-Oss     | Yes     | (r ) Yes  | Yes    
2 | http-ftp.gwdg.de-067b7761           | Packman Repository          | Yes     | (r ) Yes  | Yes    
3 | http-opensuse-guide.org-0f2aa9e5    | libdvdcss repository        | Yes     | (r ) Yes  | Yes    
4 | repo-debug                          | openSUSE-Tumbleweed-Debug   | No      | ----      | ----   
5 | repo-non-oss                        | openSUSE-Tumbleweed-Non-Oss | Yes     | (r ) Yes  | Yes    
6 | repo-source                         | openSUSE-Tumbleweed-Source  | No      | ----      | ----   
7 | repo-update                         | openSUSE-Tumbleweed-Update  | Yes     | (r ) Yes  | Yes    

After the latest update with zypper dup, Dropbox won’t start any more. It displays the Installation Dialog, then downloads the binary client and unpacks it, where it seems to be stuck at 97 - 99%.

Calling “dropbox start -i” on the command line results in a segfault:

~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27> ./dropboxd
dropbox: locating interpreter
dropbox: logging to /tmp/dropbox-antifreeze-8kyf52
dropbox: initializing
dropbox: running python 2.7.11
dropbox: setting program path ‘/home/XXX/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/dropbox’
dropbox: setting home path ‘/home/XXX/.dropbox-dist/dropbox-lnx.x86_64-38.4.27’
dropbox: setting python path ‘/home/XXX/.dropbox-dist/dropbox-lnx.x86_64-38.4.27:/home/XXX/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/python-packages-27.zip’
dropbox: python initialized
dropbox: running dropbox
dropbox: setting args
dropbox: applying overrides
dropbox: running main script
Segmentation fault (core dumped)

Anyone else having the same problem or any hints what to try next?

All the best.

Hi
Just tested here, 20171102, GNOME DE, all runs fine. After your segfault I see it loading fq extensions and status is fine…


dropbox start

Starting Dropbox..~/.dropbox: locating interpreter
dropbox: logging to /tmp/dropbox-antifreeze-xxxxxx
dropbox: initializing
dropbox: running python 2.7.11
dropbox: setting program path '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/dropbox'
dropbox: setting home path '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27'
dropbox: setting python path '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27:~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/python-packages-27.zip'
dropbox: python initialized
dropbox: running dropbox
dropbox: setting args
dropbox: applying overrides
dropbox: running main script
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/cryptography.hazmat.bindings._constant_time.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/cryptography.hazmat.bindings._openssl.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/cryptography.hazmat.bindings._padding.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/psutil._psutil_linux.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/psutil._psutil_posix.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/linuxffi.pthread._linuxffi_pthread.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/tornado.speedups.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/cpuid.compiled._cpuid.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/linuxffi.resolv.compiled._linuxffi_resolv.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/posixffi.libc._posixffi_libc.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/librsyncffi.compiled._librsyncffi.so'
dropbox: load fq extension '~/.dropbox-dist/dropbox-lnx.x86_64-38.4.27/linuxffi.sys.compiled._linuxffi_sys.so'
Done!

dropbox status
Up to date

Thanks for testing, Malcolm.

I did a little test going back to my pre-update system state with the BTRFS snapshot.

My last state before update was good and had Kernel version 4.13.6. The broken system has 4.13.10. I don’t know which Tumbleweed version in the good version, the broken version is the same as your good version.

I’m going to install some XFCE desktop and see, if this is a KDE specific thing.

Cheers, Felix

So, tested XFCE with Dropbox. Same crash as in KDE. This is possibly not reproducible for others with some dependent system components caught in an “in-between” state during update.

I’ll probably go back to the working snapshot and wait, till the update does not break my system.

Cheers, Felix.

Hi
Create a test user and login with that user and try…

Same segfault with a new test user.

Greets, Felix

Hi Felix
Rather than ./dropboxd try the dropbox start (/usr/bin/dropbox) routine as your user, this is a python script to configure/check things up and see if that helps…

Hi Malcolm,

that’s what I did in the first place and also tried with each system state. The Application icon itself doesn’t do anything more sinister than calling

dropbox start -i

which is also what the online ressources tell you to use on the command line.

$> which dropbox
/usr/bin/dropbox

The /usr/bin/dropbox seems to be some kind of python wrapper that hides the actual segfault output. Instead it waits for quite some time, then when there is a failure it asks you to download and reinstall the binary demon which gets installed into ~/.dropbox-dist, never seeming to finish the “unpacking”. The reason why I called it directly for the initial report is, that it is the only way to make it fail fast and also print the last line, which seems relevant:

Segmentation fault (core dumped)

Copied from /usr/bin/dropbox:


@command
def start(argv):
    u"""start dropboxd
dropbox start -i]

Starts the dropbox daemon, dropboxd. If dropboxd is already running, this will do nothing.

options:
  -i --install  auto install dropboxd if not available on the system
"""

    should_install = "-i" in argv or "--install" in argv

    # first check if dropbox is already running
    if is_dropbox_running():
        if not grab_link_url_if_necessary():
            console_print(u"Dropbox is already running!")
        return

    console_print(u"Starting Dropbox...", linebreak=False)
    console_flush()
    if not start_dropbox():
        if not should_install:
            console_print()
            console_print(u"The Dropbox daemon is not installed!")
            console_print(u"Run \"dropbox start -i\" to install the daemon")
            return

        # install dropbox!!!
        try:
            download()
        except:
            traceback.print_exc()
        else:
            if GUI_AVAILABLE:
                start_dropbox()
                console_print(u"Done!")
            else:
                if start_dropbox():
                    if not grab_link_url_if_necessary():
                        console_print(u"Done!")
    else:
        if not grab_link_url_if_necessary():
            console_print(u"Done!")


and start_dropbox() doesn’t do anything else than calling ~/.dropbox-dist/dropboxd which I did manually:


def start_dropbox():
    db_path = os.path.expanduser(u"~/.dropbox-dist/dropboxd").encode(sys.getfilesystemencoding())
    if os.access(db_path, os.X_OK):
        f = open("/dev/null", "w")
        # we don't reap the child because we're gonna die anyway, let init do it
        a = subprocess.Popen([db_path], preexec_fn=os.setsid, cwd=os.path.expanduser("~"),
                             stderr=sys.stderr, stdout=f, close_fds=True)

        # in seconds
        interval = 0.5
        wait_for = 60
        for i in xrange(int(wait_for / interval)):
            if is_dropbox_running():
                return True
            # back off from connect for a while
            time.sleep(interval)

        return False
    else:
        return False

Note: the logfile: /tmp/dropbox-antifreeze-xxxxxx contains the same output you get from calling /usr/bin/dropbox, id est all the lines starting with dropbox: until Running main script, but missing the Segmentation fault. Which happens to be in the binary blob. I tried to download the source but got blocked by some missing dependency in the ./configure step, which scared me of, because I have fought many fights with autotools and they always win because they are the devil :-p. I’ll redownload, try to compile and report the exact failure in a later post.

Hi
If you look at the spec file for build requires and compiling;
https://build.opensuse.org/package/view_file/openSUSE:Factory/nautilus-dropbox/nautilus-dropbox.spec?expand=1


%configure --disable-static

Then look at the build log for all the options…


./configure --host=x86_64-suse-linux-gnu --build=x86_64-suse-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/lib --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --disable-static

Hi

Have you found any solution to this issue? I got the exact same problem! Dropbox is unpacking and gets stuck at 96% then it closes after some time.