obsproject / obsproject/obs-studio

libobs is underlinked

Open
#9,343 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
76.4k
Forks
10.2k
Avg merge
4d 23h
Merged PRs (30d)
12

Description

Operating System Info

Other

Other OS

Debian

OBS Studio Version

29.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

n.n.

OBS Studio Crash Log URL

n.n.

Expected Behavior

obs explicitly encodes all runtime dependencies to dynamic libraries.

Current Behavior

building obs results in a libobs.so which uses symbols from libm but fails to link against the library.

Steps to Reproduce
$ wget https://github.com/obsproject/obs-studio/releases/download/29.1.3/obs-studio_29.1.3-0obsproject1.focal_amd64.deb
$ dpkg -x obs-studio_29.1.3-0obsproject1.focal_amd64.deb OBS
$ strings OBS/usr/lib/x86_64-linux-gnu/libobs.so.29 | grep asinf
asinf
$ readelf -d OBS/usr/lib/x86_64-linux-gnu/libobs.so.29  | grep  lib
 0x0000000000000001 (NEEDED)             Shared library: [libavcodec.so.58]
 0x0000000000000001 (NEEDED)             Shared library: [libavformat.so.58]
 0x0000000000000001 (NEEDED)             Shared library: [libavutil.so.56]
 0x0000000000000001 (NEEDED)             Shared library: [libswscale.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libswresample.so.3]
 0x0000000000000001 (NEEDED)             Shared library: [libjansson.so.4]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libX11-xcb.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libxcb.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libuuid.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpulse.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgio-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwayland-client.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libxkbcommon.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libX11.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
 0x000000000000000e (SONAME)             Library soname: [libobs.so.0]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib/x86_64-linux-gnu]
$ readelf -d OBS/usr/lib/x86_64-linux-gnu/libobs.so.29  | grep  libm
$
Anything else we should know?

typically this is not a very big deal, as libm is pulled in via various other libraries.

nevertheless i think that any direct dependency should be expressed explicitly (rather than implicitly trusting that somebody else will do the work)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the libobs shared-library build configuration and reproduce the report using the provided dpkg, strings, and readelf commands on the OBS 29.1.3 package. Done means the built libobs.so explicitly reports libm as a runtime dependency, while the existing dependency checks remain intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.