Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

flatpak update produces ostree error with curl 8.10.0 (+ patch) #3299

Closed
adamthiede opened this issue Sep 13, 2024 · 44 comments · Fixed by #3307
Closed

flatpak update produces ostree error with curl 8.10.0 (+ patch) #3299

adamthiede opened this issue Sep 13, 2024 · 44 comments · Fixed by #3307
Assignees
Labels

Comments

@adamthiede
Copy link

When running flatpak update on Alpine Linux edge, the following error message is produced:

OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:534:sock_cb: code should not be reached
Bail out! OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:534:sock_cb: code should not be reached
Aborted

This began when this patch was added to Alpine's curl package; the patch addresses this issue and is already in curl's master branch.

Let me know if I can provide any more info.

See here for more info. https://gitlab.alpinelinux.org/alpine/aports/-/issues/16444

@adamthiede adamthiede changed the title flatpak update produces segfault with curl 8.10.0 (+ patch) flatpak update produces ostree error with curl 8.10.0 (+ patch) Sep 13, 2024
@cgwalters
Copy link
Member

Hmm fun, thanks for the report. This will require some analysis. If you happen to have the environment set up it'd be quite useful to know if this reproduces with make check in the ostree unit tests.

@cgwalters cgwalters added the bug label Sep 13, 2024
@adamthiede
Copy link
Author

Sure thing.

For reference, here's how Alpine builds ostree: https://git.alpinelinux.org/aports/tree/community/ostree/APKBUILD

The "build" step has the configuration options in it. I've built it myself and confirmed that removing the '--with-curl' option does fix this, but I'm unaware of any downsides to that.

Attached is the output of make check after the configure and build step that's in that APKBUILD. (In this instance I did not remove '--with-curl'.) Which test am I looking for?

make_check.txt

@adamthiede
Copy link
Author

adamthiede commented Sep 15, 2024

In the error it mentions this line:
https://github.com/ostreedev/ostree/blob/main/src/libostree/ostree-fetcher-curl.c#L534
I built ostree with that line commented out, and flatpak network operations (installing, etc) worked. I assume that's because it was falling back to libsoup though?

@vixalien
Copy link

The issue has been "fixed" in alpine linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/16444

All you need to do is downgrade libcurl by doing an apk upgrade -a

@adamthiede
Copy link
Author

Yes, it's working again, but unless this bug is fixed in curl, then it'll likely be relevant again soon.

@ThatOneCalculator
Copy link

It's now relevant in Arch Linux.

@adamthiede
Copy link
Author

I assume "resolving" this in Arch would be similar to Alpine; remove curl as a build dependency in ostree, bump pkgrel, and rebuild: https://gitlab.archlinux.org/archlinux/packaging/packages/ostree/-/blob/main/PKGBUILD?ref_type=heads#L93

Understandable that that's not a "real" solution.

@musicfunfan
Copy link

I have the same problem on archlinux. So i will wait for a fix. This seems to be new problem if this persist i will. Try to remove curl from dependencys But i do not like this solution very much to be honest.

@adamthiede
Copy link
Author

Arch Linux IRC members say this is known and being investigated, so hopefully a fix/workaround is forthcoming.

@ThatOneCalculator
Copy link

ThatOneCalculator commented Sep 18, 2024

For now, I've published the ostree-nocurl AUR package which solves the issue.

@musicfunfan
Copy link

If i this take a lot of time get fix. I will use the AUR package. Thank you very much. @ThatOneCalculator

@Antiz96
Copy link

Antiz96 commented Sep 18, 2024

I just pushed a new release of the ostree package to the Arch [extra] repository built without curl support as a temporary workaround. Updating to ostree 2024.7-3 should fix the issue for Arch users.

@ThatOneCalculator I'm removing your AUR package, it shouldn't be necessary anymore 😉

@arnav4o4

This comment was marked as off-topic.

@musicfunfan

This comment was marked as off-topic.

@ThatOneCalculator

This comment was marked as off-topic.

@Antiz96

This comment was marked as off-topic.

@arrwdodger

This comment was marked as off-topic.

@Antiz96

This comment was marked as off-topic.

@arrwdodger

This comment was marked as off-topic.

@ThatOneCalculator

This comment was marked as off-topic.

@arrwdodger

This comment was marked as off-topic.

@smcv
Copy link
Contributor

smcv commented Sep 18, 2024

It would probably be best to keep Arch-specific discussion of mirrors, packages and workarounds to an Arch forum or issue tracker of some sort, to avoid creating noise for the developers who might be able to debug and fix this. The important part of what Arch has done, from an upstream point of view, is: compiling libostree to use libsoup instead of libcurl is a workaround for this.

@arrwdodger
Copy link

apologies, i didn't mean for this to get off track.

@smcv
Copy link
Contributor

smcv commented Sep 18, 2024

If you happen to have the environment set up it'd be quite useful to know if this reproduces with make check in the ostree unit tests.

I get the same error message with the libcurl 8.10.1 in Debian testing/unstable (the actual library that my libostree is linked to is libcurl-gnutls.so.4).

Unfortunately, libostree's own make check doesn't reproduce this - presumably downloading from a real Flatpak server takes us onto a different code path?

I'm trying the Flatpak test suite to see whether that reproduces the same error message.

@smcv
Copy link
Contributor

smcv commented Sep 18, 2024

Sorry, the Flatpak test suite doesn't reproduce this either...

cgwalters added a commit to cgwalters/ostree that referenced this issue Sep 18, 2024
ref ostreedev#3299

This won't fix that issue, but *if* this assertion triggers
it should give us a better idea of the possible codepaths
where it is happening.

Signed-off-by: Colin Walters <[email protected]>
@dbnicholson
Copy link
Member

Both test suites use a fake-ish HTTP 1 servers (ostree uses SoupServer while flatpak uses Python's http.server IIRC). Perhaps you need an HTTP 2 server to induce this. Could be possible to spin up NGINX and throw some fake content into it.

@cgwalters
Copy link
Member

I put up #3306 - it'd be quite useful if someone who is hitting this problem can try running with that patch; again it won't fix the problem but I'm hoping that if that assertion trips we're more likely to get a stack trace that hints at the problem.

@dbnicholson
Copy link
Member

That said, if someone affected could get a backtrace that might help a bit.

@adamthiede
Copy link
Author

I put up #3306 - it'd be quite useful if someone who is hitting this problem can try running with that patch; again it won't fix the problem but I'm hoping that if that assertion trips we're more likely to get a stack trace that hints at the problem.

Built with the patch, and an attempted install:

$ sudo flatpak install adwaita-dark
Looking for matches…
Found ref ‘runtime/org.gtk.Gtk3theme.Adwaita-dark/aarch64/3.22’ in remote ‘flathub’ (system).
Use this ref? [Y/n]: y


        ID                               Branch  Op  Remote   Download
 1. [|] org.gtk.Gtk3theme.Adwaita-dark   3.22    i   flathub  < 1.5 kB

Installing…**
OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:521:addsock: assertion failed (rc == CURLM_OK): (1 == 0)
Bail out! OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:521:addsock: assertion failed (rc == CURLM_OK): (1 == 0)
Aborted

how would I generate a trace for this?

cgwalters added a commit to cgwalters/ostree that referenced this issue Sep 18, 2024
This is my best current guess as to the cause of
ostreedev#3299

If the fetcher gets torn down while it has outstanding requests
in flight, I think we'll end up in some code paths calling
into libcurl to cancel things.

It might be that prior to the curl change, while the handle was
invalid it was "valid enough" for that to work.

Clearly moving the multi cleanup to be the last step is
a safe thing, and it might fix the bug, so let's do that.

Signed-off-by: Colin Walters <[email protected]>
@cgwalters
Copy link
Member

I also just put up #3307 which might fix the problem, so if folks could test that too that'd be great

@cgwalters
Copy link
Member

Nice! That's helpful.

how would I generate a trace for this?

Does your system have a core dump collector enabled like systemd's? See https://www.freedesktop.org/software/systemd/man/latest/systemd-coredump.html
If so you'll find it via coredumpctl e.g.

@cgwalters cgwalters self-assigned this Sep 18, 2024
@adamthiede
Copy link
Author

With both patches applied:

...
Installing…**
OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:525:addsock: assertion failed (rc == CURLM_OK): (1 == 0)
Bail out! OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:525:addsock: assertion failed (rc == CURLM_OK): (1 == 0)
Aborted

Alpine uses OpenRC; systemd is not present unfortunately. Is there some sort of env variable I can set?

@smcv
Copy link
Contributor

smcv commented Sep 18, 2024

Alpine uses OpenRC; systemd is not present unfortunately. Is there some sort of env variable I can set?

Please consult your OS's documentation for how to get a useful backtrace from a crash. (It is OS-specific and is not as simple as merely setting an environment variable.)

@fallingcats
Copy link

fallingcats commented Sep 18, 2024

That said, if someone affected could get a backtrace that might help a bit.

I've got this backtrace on arch, if that helps:

Thread 6 (Thread 0x7f2ea90006c0 (LWP 60562)):
#0  0x00007f2eae01063d in __GI___poll (fds=0x7f2e98000b90, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2eaebfce0d in g_main_context_poll_unlocked (priority=2147483647, context=0x559821880290, timeout=<optimized out>, fds=0x7f2e98000b90, n_fds=3) at ../glib/glib/gmain.c:4521
#2  g_main_context_iterate_unlocked.isra.0 (context=0x559821880290, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4212
#3  0x00007f2eaeb9afa7 in g_main_loop_run (loop=0x559821880390) at ../glib/glib/gmain.c:4419
#4  0x00007f2eaea81d04 in gdbus_shared_thread_func (user_data=0x559821878070) at ../glib/gio/gdbusprivate.c:284
#5  0x00007f2eaebca1b6 in g_thread_proxy (data=0x5598218803b0) at ../glib/glib/gthread.c:835
#6  0x00007f2eadf9939d in start_thread (arg=<optimized out>) at pthread_create.c:447
#7  0x00007f2eae01e49c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 5 (Thread 0x7f2ea3e006c0 (LWP 60563)):
#0  0x00007f2eae01063d in __GI___poll (fds=0x7f2e900014a0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2eaebfce0d in g_main_context_poll_unlocked (priority=2147483647, context=0x7f2e90000b70, timeout=<optimized out>, fds=0x7f2e900014a0, n_fds=1) at ../glib/glib/gmain.c:4521
#2  g_main_context_iterate_unlocked.isra.0 (context=0x7f2e90000b70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4212
#3  0x00007f2eaeb9afa7 in g_main_loop_run (loop=0x7f2e90000d90) at ../glib/glib/gmain.c:4419
#4  0x00007f2eae5dd604 in server_thread_func (user_data=0x55982188d0f0) at ../polkit/src/polkitagent/polkitagentlistener.c:357
#5  0x00007f2eaebca1b6 in g_thread_proxy (data=0x559821888840) at ../glib/glib/gthread.c:835
#6  0x00007f2eadf9939d in start_thread (arg=<optimized out>) at pthread_create.c:447
#7  0x00007f2eae01e49c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 4 (Thread 0x7f2ea9a006c0 (LWP 60561)):
#0  0x00007f2eae01063d in __GI___poll (fds=0x559821874650, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2eaebfce0d in g_main_context_poll_unlocked (priority=2147483647, context=0x5598218743d0, timeout=<optimized out>, fds=0x559821874650, n_fds=1) at ../glib/glib/gmain.c:4521
#2  g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x5598218743d0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4212
#3  0x00007f2eaeb99795 in g_main_context_iteration (context=0x5598218743d0, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4282
#4  0x00007f2eaeb997f2 in glib_worker_main (data=<optimized out>) at ../glib/glib/gmain.c:6442
#5  0x00007f2eaebca1b6 in g_thread_proxy (data=0x5598218745f0) at ../glib/glib/gthread.c:835
#6  0x00007f2eadf9939d in start_thread (arg=<optimized out>) at pthread_create.c:447
#7  0x00007f2eae01e49c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 3 (Thread 0x7f2ea34006c0 (LWP 60587)):
#0  0x00007f2eae01063d in __GI___poll (fds=0x7f2e8c003b90, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f2eaebfce0d in g_main_context_poll_unlocked (priority=2147483647, context=0x559821a32a80, timeout=<optimized out>, fds=0x7f2e8c003b90, n_fds=1) at ../glib/glib/gmain.c:4521
#2  g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x559821a32a80, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4212
#3  0x00007f2eaeb99795 in g_main_context_iteration (context=context@entry=0x559821a32a80, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4282
#4  0x00007f2eacbcb1ee in dconf_gdbus_worker_thread (user_data=0x559821a32a80) at ../dconf/gdbus/dconf-gdbus-thread.c:82
#5  0x00007f2eaebca1b6 in g_thread_proxy (data=0x559821a5a170) at ../glib/glib/gthread.c:835
#6  0x00007f2eadf9939d in start_thread (arg=<optimized out>) at pthread_create.c:447
#7  0x00007f2eae01e49c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 2 (Thread 0x7f2eaa4006c0 (LWP 60560)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f2eaebf5eb0 in g_cond_wait (cond=0x559821870098, mutex=0x559821870090) at ../glib/glib/gthread-posix.c:1552
#2  0x00007f2eaeb6295c in g_async_queue_pop_intern_unlocked (queue=0x559821870090, wait=1, end_time=-1) at ../glib/glib/gasyncqueue.c:375
#3  0x00007f2eaebcf7f7 in g_thread_pool_spawn_thread (data=<optimized out>) at ../glib/glib/gthreadpool.c:297
#4  0x00007f2eaebca1b6 in g_thread_proxy (data=0x55982186dd70) at ../glib/glib/gthread.c:835
#5  0x00007f2eadf9939d in start_thread (arg=<optimized out>) at pthread_create.c:447
#6  0x00007f2eae01e49c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 1 (Thread 0x7f2eacc49680 (LWP 60559)):
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f2eadf9b463 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:78
#2  0x00007f2eadf42120 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007f2eadf294c3 in __GI_abort () at abort.c:79
#4  0x00007f2eaeb5b11b in g_assertion_message (domain=domain@entry=0x7f2eae7ea052 "OSTree", file=file@entry=0x7f2eae7f2ae8 "src/libostree/ostree-fetcher-curl.c", line=line@entry=534, func=func@entry=0x7f2eae7fd738 <__func__.6.lto_priv.11> "sock_cb", message=message@entry=0x559821beca40 "code should not be reached") at ../glib/glib/gtestutils.c:3331
#5  0x00007f2eaebc6d79 in g_assertion_message_expr (domain=domain@entry=0x7f2eae7ea052 "OSTree", file=file@entry=0x7f2eae7f2ae8 "src/libostree/ostree-fetcher-curl.c", line=line@entry=534, func=func@entry=0x7f2eae7fd738 <__func__.6.lto_priv.11> "sock_cb", expr=expr@entry=0x0) at ../glib/glib/gtestutils.c:3357
#6  0x00007f2eae7bf9f3 in sock_cb (easy=<optimized out>, s=<optimized out>, what=<optimized out>, cbp=<optimized out>, sockp=<optimized out>) at src/libostree/ostree-fetcher-curl.c:534
#7  sock_cb (easy=<optimized out>, s=<optimized out>, what=<optimized out>, cbp=0x559821bf4fd0, sockp=0x0) at src/libostree/ostree-fetcher-curl.c:526
#8  0x00007f2eae4198f6 in Curl_multi_closed (data=0x559821bf5720, s=139) at /usr/src/debug/curl/curl/lib/multi.c:3035
#9  0x00007f2eae4645bd in socket_close.isra.0 (data=0x559821bf5720, conn=0x559821be3b10, use_callback=<optimized out>, sock=139) at /usr/src/debug/curl/curl/lib/cf-socket.c:424
#10 0x00007f2eae3d3c47 in cf_socket_close (cf=0x5598218c5c80, data=<optimized out>) at /usr/src/debug/curl/curl/lib/cf-socket.c:1005
#11 0x00007f2eae3dde56 in cf_he_close (cf=0x5598218c5c50, data=0x559821bf5720) at /usr/src/debug/curl/curl/lib/connect.c:1004
#12 0x00007f2eae451ef4 in ssl_cf_close (cf=0x559821a33f30, data=0x559821bf5720) at /usr/src/debug/curl/curl/lib/vtls/vtls.c:1666
#13 0x00007f2eae3ddf0e in cf_setup_close (cf=0x559821a3b1d0, data=0x559821bf5720) at /usr/src/debug/curl/curl/lib/connect.c:1359
#14 0x00007f2eae3d26e2 in cf_hc_close (cf=0x559821bc1520, data=0x559821bf5720) at /usr/src/debug/curl/curl/lib/cf-https-connect.c:496
#15 0x00007f2eae3ddf7e in Curl_conn_close (data=data@entry=0x559821bf5720, index=index@entry=0) at /usr/src/debug/curl/curl/lib/cfilters.c:180
#16 0x00007f2eae3df00d in cpool_close_and_destroy (cpool=<optimized out>, conn=0x559821be3b10, data=0x559821bf5720, do_shutdown=false) at /usr/src/debug/curl/curl/lib/conncache.c:1063
#17 0x00007f2eae3e0806 in cpool_shutdown_discard_all (cpool=<optimized out>) at /usr/src/debug/curl/curl/lib/conncache.c:641
#18 cpool_shutdown_all (timeout_ms=0, cpool=0x559821bfd4f8, data=<optimized out>) at /usr/src/debug/curl/curl/lib/conncache.c:1195
#19 cpool_close_and_destroy_all (cpool=0x559821bfd4f8) at /usr/src/debug/curl/curl/lib/conncache.c:679
#20 0x00007f2eae4190ab in Curl_cpool_destroy (cpool=0x559821bfd4f8) at /usr/src/debug/curl/curl/lib/conncache.c:189
#21 curl_multi_cleanup (multi=0x559821bfd370) at /usr/src/debug/curl/curl/lib/multi.c:2758
#22 0x00007f2eae7bf1ff in _ostree_fetcher_finalize (object=0x559821bf4fd0) at src/libostree/ostree-fetcher-curl.c:183
#23 0x00007f2eae931065 in g_object_unref (_object=0x559821bf4fd0) at ../glib/gobject/gobject.c:4484
#24 0x00007f2eae77422f in reinitialize_fetcher (pull_data=0x7ffe4425b930, remote_name=0x5598218c7040 "flathub", error=0x7ffe4425c0a0) at src/libostree/ostree-repo-pull.c:3235
#25 ostree_repo_pull_with_options (self=self@entry=0x55982189a960, remote_name_or_baseurl=0x5598218c7040 "flathub", options=options@entry=0x5598218c5bb0, progress=progress@entry=0x559821bb4e30, cancellable=cancellable@entry=0x0, error=error@entry=0x7ffe4425c0a0) at src/libostree/ostree-repo-pull.c:4655
#26 0x0000559804175ed3 in repo_pull (flags=OSTREE_REPO_PULL_FLAGS_BAREUSERONLY_FILES, self=0x55982189a960, state=0x5598218a06e0, dirs_to_pull=<optimized out>, ref_to_fetch=0x559821912040 "app/com.google.Chrome/x86_64/stable", rev_to_fetch=<optimized out>, sideload_repo=<optimized out>, token=<optimized out>, flatpak_flags=FLATPAK_PULL_FLAGS_DOWNLOAD_EXTRA_DATA, progress=0x559821bd1cb0, cancellable=0x0, error=0x7ffe4425c0a0) at ../flatpak/common/flatpak-dir.c:5529
#27 flatpak_dir_pull.constprop.0 (self=0x55982189a6c0, state=0x5598218a06e0, ref=0x559821912040 "app/com.google.Chrome/x86_64/stable", opt_rev=<optimized out>, subpaths=<optimized out>, sideload_repo=<optimized out>, require_metadata=0x559821b8e370, token=0x0, repo=0x55982189a960, flatpak_flags=FLATPAK_PULL_FLAGS_DOWNLOAD_EXTRA_DATA, progress=0x559821bd1cb0, cancellable=0x0, error=0x7ffe4425c0a0, flags=OSTREE_REPO_PULL_FLAGS_NONE) at ../flatpak/common/flatpak-dir.c:6127
#28 0x0000559804154203 in flatpak_dir_update (self=0x55982189a6c0, no_pull=0, no_deploy=0, no_static_deltas=<optimized out>, allow_downgrade=0, app_hint=1, install_hint=0, state=0x559821912270, ref=0x559821912020, commit=0x559821b8f830 "d5bddfa15769f135a0900fafbc43ca49433603a58e8d8d96b4e50832a40ab90c", opt_subpaths=<optimized out>, opt_previous_ids=0x0, sideload_repo=0x0, require_metadata=0x559821b8e370, token=0x0, progress=0x559821bd1cb0, cancellable=0x0, error=0x7ffe4425c0a0) at ../flatpak/common/flatpak-dir.c:10709
#29 _run_op_kind (self=self@entry=0x55982189a290, op=op@entry=0x559821912270, remote_state=remote_state@entry=0x5598218a06e0, out_needs_prune=out_needs_prune@entry=0x7ffe4425c270, out_needs_triggers=out_needs_triggers@entry=0x7ffe4425c26c, out_needs_cache_drop=out_needs_cache_drop@entry=0x7ffe4425c268, cancellable=0x0, error=0x7ffe4425c2a0) at ../flatpak/common/flatpak-transaction.c:4842
#30 0x000055980415926c in flatpak_transaction_real_run (self=0x55982189a290, cancellable=0x0, error=0x7ffe4425c568) at ../flatpak/common/flatpak-transaction.c:5277
#31 0x00005598040e7d13 in flatpak_cli_transaction_run (transaction=0x55982189a290, cancellable=<optimized out>, error=0x7ffe4425c568) at ../flatpak/app/flatpak-cli-transaction.c:1625
#32 0x00005598040e150c in flatpak_transaction_run (transaction=0x55982189a290, cancellable=0x0, error=0x7ffe4425c568) at ../flatpak/common/flatpak-transaction.c:4738
#33 flatpak_builtin_update (argc=<optimized out>, argv=<optimized out>, cancellable=0x0, error=0x7ffe4425c568) at ../flatpak/app/flatpak-builtins-update.c:259
#34 0x000055980409b36a in flatpak_run (argc=<optimized out>, argv=<optimized out>, res_error=0x7ffe4425c558) at ../flatpak/app/flatpak-main.c:857
#35 main (argc=<optimized out>, argv=<optimized out>) at ../flatpak/app/flatpak-main.c:962


@cgwalters

This comment was marked as outdated.

@cgwalters
Copy link
Member

Edit sorry...ugh, I may have built with libsoup accidentally when testing the first time; anyways, I have a reproducer environment.

@cgwalters
Copy link
Member

#3307 is updated and fixes this for me.

@adamthiede
Copy link
Author

adamthiede commented Sep 18, 2024

I've tested and it fixes it for me too. Awesome!

I'm building 2024.7 with #3307 and that seems fine. Should I add this patch to the package, or does this warrant a whole release?

@cgwalters
Copy link
Member

We'll be doing an ostree release very soon including this patch, but again to highlight here I think the change is quite safe to cherry-pick.

@lee2sman
Copy link

lee2sman commented Sep 19, 2024

I believe this is the same issue when updating flatpak on Void linux as well (also with curl and libcurl 8.10.1)

OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:534:sock_cb: code should not be reached
Bail out! OSTree:ERROR:src/libostree/ostree-fetcher-curl.c:534:sock_cb: code should not be reached

@dbnicholson
Copy link
Member

It seems like this should be fixed by #3307. Nice work @cgwalters!

@cgwalters
Copy link
Member

Released in https://github.com/ostreedev/ostree/releases/tag/v2024.8

raspbian-autopush pushed a commit to raspbian-packages/ostree that referenced this issue Oct 1, 2024
ref ostreedev/ostree#3299

This won't fix that issue, but *if* this assertion triggers
it should give us a better idea of the possible codepaths
where it is happening.

Signed-off-by: Colin Walters <[email protected]>
Origin: upstream, 2024.8, commit:472d9d493a3e4a08415da4c337a7e831e0c5a5e2
Bug-Debian: https://bugs.debian.org/1082121

Gbp-Pq: Name curl-Assert-that-curl_multi_assign-worked.patch
raspbian-autopush pushed a commit to raspbian-packages/ostree that referenced this issue Oct 1, 2024
Because curl_multi_cleanup may invoke callbacks, we effectively have
some circular references going on here. See discussion in

curl/curl#14860

Basically what we do is the socket callback libcurl may invoke into a no-op when
we detect we're finalizing. The data structures are owned by this object and
not by the callbacks, and will be destroyed below. Note that
e.g. g_hash_table_unref() may itself invoke callbacks, which is where
some data is cleaned up.

Signed-off-by: Colin Walters <[email protected]>
Origin: upstream, 2024.8, commit:4d755a85225ea0a02d4580d088bb8a97138cb040
Bug: ostreedev/ostree#3299
Bug-Debian: https://bugs.debian.org/1082121

Gbp-Pq: Name curl-Make-socket-callback-during-cleanup-into-no-op.patch
@marathone
Copy link

Same issue on Debian Stable (Bookworm) for the past week or so FWIW.

@smcv
Copy link
Contributor

smcv commented Oct 4, 2024

Same issue on Debian Stable (Bookworm) for the past week or so FWIW.

This should only affect Debian 12 if you are using a newer version of libcurl (upgrading core libraries like this somewhat defeats the purpose of using a stable release). It is a known issue for users of the libcurl 8.10.x in bookworm-backports. The workaround would be to revert to the libcurl 7.88.x shipped in Debian 12.

I've uploaded a fixed libostree for Debian 12, but it needs approval by the stable release managers before it will be made available in stable-proposed-updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.