[SOLVED] Error: unknown type 'pthread_mutex_t'

Hello,

This may not be a 100% Panda3D question, but this is the only place I can think of to get any answers.
I am trying to setup tobspr’s RenderPipeline (I have already tried asking on the project’s github issues section, but no luck) and when I get to the point where the setup asks me if I want to compile the C++ sources, after selecting yes, I get the following errors:

[ 04 ]  Building the native code .. (This might take a while!)
	Running script: rpcore/native/build.py




------------------------------------------------------------

CMake Error:


------------------------------------------------------------




Failed to execute 'build.py'
Output: Command '['/usr/bin/python', '-B', 'build.py']' returned non-zero exit status 255 
 Creating directory /home/radu/Projects/Panda3D-RenderPipeline/rpcore/native/scripts/../linux_amd64_panda1.10.0_py27
Executing command:  cmake /home/radu/Projects/Panda3D-RenderPipeline/rpcore/native -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPYTHON_EXECUTABLE:STRING=/usr/bin/python -DPROJECT_NAME:STRING=native_ -DINTERROGATE_LIB:STRING=p3interrogatedb -DPYTHONVERDOT:STRING=2.7 -DHAVE_LIB_EIGEN=TRUE -DIGATE_VERBOSE=0 -DOPTIMIZE=3 

-- Bitness: 32 bit ('')
CMake Error at CMakeLists.txt:266 (message):
  Interrogate failed: Executing command: /usr/bin/interrogate -fnames -string
  -refcount -assert -python-native -S/usr/include/panda3d/parser-inc
  -S/usr/include/panda3d/ -srcdir .  -oc interrogate_wrapper.cpp -od
  interrogate.in -module native_ -library native_ -nomangle -DINTERROGATE
  -DCPPPARSER -D__STDC__=1 -D__cplusplus=201103L -D__attribute__\(x\)=
  -D__i386__ ./rp_spot_light.h ./tag_state_manager.h ./shadow_manager.h
  ./gpu_command_list.h ./rp_light.h ./shadow_source.h ./config_rsnative.h
  ./gpu_command.h ./internal_light_manager.h ./pssm_helper.h
  ./rp_point_light.h ./ies_dataset.h ./pointer_slot_storage.h
  ./pssm_camera_rig.h ./shadow_atlas.h

  

  /usr/include/panda3d/mutexPosixImpl.h:43:10: error: unknown type
  'pthread_mutex_t'

    INLINE pthread_mutex_t *get_posix_lock();
           ^~~~~~~~~~~~~~~

  /usr/include/panda3d/mutexPosixImpl.h:46:3: error: unknown type
  'pthread_mutex_t'

    pthread_mutex_t _lock;
    ^~~~~~~~~~~~~~~

  /usr/include/panda3d/mutexPosixImpl.h:71:10: error: unknown type
  'pthread_mutex_t'

    INLINE pthread_mutex_t *get_posix_lock();
           ^~~~~~~~~~~~~~~

  /usr/include/panda3d/mutexPosixImpl.h:74:3: error: unknown type
  'pthread_mutex_t'

    pthread_mutex_t _lock;
    ^~~~~~~~~~~~~~~

  /usr/include/panda3d/mutexPosixImpl.I:65:8: error: unknown type
  'pthread_mutex_t'

  INLINE pthread_mutex_t *MutexPosixImpl::

         ^~~~~~~~~~~~~~~

  /usr/include/panda3d/mutexPosixImpl.I:134:8: error: unknown type
  'pthread_mutex_t'

  INLINE pthread_mutex_t *ReMutexPosixImpl::

         ^~~~~~~~~~~~~~~

  /usr/include/panda3d/memoryHook.h:43:42: error: syntax error, unexpected
  IDENTIFIER, expecting ')'

    virtual void *heap_alloc_single(size_t size);
                                           ^~~~

  Error parsing file: './rp_spot_light.h'

   Traceback (most recent call last):
    File "scripts/interrogate.py", line 135, in <module>
      interrogate()
    File "scripts/interrogate.py", line 108, in interrogate
      try_execute(*cmd)
    File "/home/radu/Projects/Panda3D-RenderPipeline/rpcore/native/scripts/common.py", line 216, in try_execute
      raise Exception("Process had non-zero returncode:", process.returncode)

  Exception: ('Process had non-zero returncode:', 1)



-- Configuring incomplete, errors occurred!
See also "/home/radu/Projects/Panda3D-RenderPipeline/rpcore/native/linux_amd64_panda1.10.0_py27/CMakeFiles/CMakeOutput.log".

I am running Ubuntu Gnome 17.04, with panda3d1.10_1.10.0-dev1106-zesty_amd64 and the only drivers that I have installed are the proprietary nVidia drivers:

Tue Apr 18 22:34:09 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 381.09                 Driver Version: 381.09                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce 940M        Off  | 0000:01:00.0     Off |                  N/A |
| N/A   40C    P0    N/A /  N/A |    254MiB /  2002MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1057    G   /usr/lib/xorg/Xorg                              16MiB |
|    0      1572    G   /usr/lib/xorg/Xorg                              76MiB |
|    0      1796    G   /usr/bin/gnome-shell                            46MiB |
|    0      2214    G   ...s-passed-by-fd --v8-snapshot-passed-by-fd    85MiB |
+-----------------------------------------------------------------------------+

P.S: When running the setup script, this error pops up alot of times. Could t his be because of Panda, or would it be from the pipeline itself?

JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock

In case anyone is interested or runs into the same problem, I managed to fix it.
What I did was edit the makepanda.py script, replacing both instances of “-pthread” with “-lpthread”: here and here

It seems that when compiling with -pthread won’t work, i’m not sure why. Hope this helps anyone.

P.S: Regarding this error:

JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock

I’m still not sure what caused it, but it seems to compile and work OK even with this message popping up every few seconds, so I guess it’s not that important.

I think the Jack error is triggered by OpenAL Soft. Perhaps you can configure OpenAL Soft to disable the Jack back-end.