20150610.1756: kezd egy olyan érzésem lenni, hogy javulna a helyzet, ha nem lenne nekem /usr/local/lib64/libiconv.a fájlom (libconv-1.14 által generált static library). Mégpedig azért, mert az AIX-nek is van /usr/lib/libiconv.a fájlja, amiben shared libek laknak:
$ ar -X32_64 tv libiconv.a
rwxr-x--- 300/300 117250 Jul 24 03:19 2013 shr4.o
rwxr-x--- 300/300 117500 Jul 24 03:19 2013 shr.o
rwxr-x--- 300/300 159410 Jul 24 03:19 2013 shr4_64.o
Namostan ezeket a derék elemeket ügyes szervezéssel átmásoltuk a saját librarynkba (sigh!), hogy egy dlopen/kload adott esetben jól beránthassa (a /usr/lib/libi18n.a(shr_64.a) dependál a libiconv.a(shr4_64.o)-ra (path-nélkül persze ('majcsak meglesz valahol' alapon), ami eccerűbb esetekben működni is látszik, bonyolultabbaknak viszont lehet hogy nem... például kicsit zsonglőrködünk a LIBPATH-tal, és esetleg máris kétszer van ilyenünk:
(gdb) info sh
From To Syms Read Shared Object Library
0x09fffffff0000240 0x09fffffff000e1da Yes (*) /usr/ccs/bin/usla64
0x090000000c088200 0x090000000c0a17df Yes /usr/local/lib64/libiconv.a(shr4_64.o)
0x0900000000451600 0x090000000045fa76 Yes (*) /usr/lib/libi18n.a(shr_64.o)
0x09000000004435a0 0x0900000000443e93 Yes (*) /usr/lib/libcrypt.a(shr_64.o)
0x0900000000000c00 0x090000000041d16a Yes (*) /usr/lib/libc.a(shr_64.o)
0x0900000000460980 0x0900000000479f5f No /usr/lib/libiconv.a(shr4_64.o)
20150610.1910: Az is okozhat némi kavart, hogy van egy /usr/local/sbin/envvars, aki LIBPATH-t akar beállítani, de még a 32-bites időkből maradt ránk...
20150610.1930: Programozósan eljárva telerakjuk debug-kiíratásokkal, és a következőt véljük látjuk:
1. Apache minden modult betölt
2. Apache minden modult kitakarít
3. Apache minden modult betölt.
Na ez az utóbbi nem sikerül, de csak akkor (legalábbis most úgy tűnik), ha a modulok között ott volt a php, és az még extension-t is betöltött. Már csak folytatni kell a nyomozást, hogy igazoljuk ezt a teóriát, azután kitalálni, hogy mi is a különbség a 32-bithez képest (aztán a végén még megoldás is kellene).
20150610.2045: Azt kellene megnézni, hogy esetleg az Apache és PHP közül az egyik a libdl-ből veszi a dlopen-t és társait, a másik meg a libc-ből (most ne firtassuk, hogy miért van ez meg két helyen is, nyilván ez is az 'elsőre jó ötletnek tűnt' kategória).
20150611.1045: Ellenőrzés:
$ dump -X64 -Tv /usr/local/sbin/httpd | grep dlopen -- nincs találat
$ dump -X64 -Tv /usr/local/lib64/libapr-1.so | grep dlopen
[119] 0x00000000 undef IMP DS EXTref /usr/lib/libc.a(shr_64.o) dlopen
$ dump -X64 -Tv /usr/local/libexec64/apache2/libphp5.so | grep dlopen
[554] 0x00000000 undef IMP DS EXTref /usr/lib/libdl.a(shr_64.o) dlopen
$ dump -X64 -Tv /usr/local/bin/php | grep dlopen
[560] 0x00000000 undef IMP DS EXTref /usr/lib/libdl.a(shr_64.o) dlopen
Asszem indián testvéremet fogom megkérni, hogy használja ő is a libdl-t, hátha segít valamit...
- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 876 megtekintés
Hozzászólások
És nem akarja...
Az 'apachectl start' ezt írja a terminálra:
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,10002) returned 3
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,10002) returned 4
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,10002) returned 5
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,10002) returned 6
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,10002) returned 7
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,10002) returned 8
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,10002) returned 9
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,10002) returned a
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,10002) returned b
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,10002) returned c
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,10002) returned d
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime.so,10002) returned e
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mpm_prefork.so,10002) returned f
dso.c: dlopen(/usr/local/libexec64/apache2/mod_negotiation.so,10002) returned 10
dso.c: dlopen(/usr/local/libexec64/apache2/mod_setenvif.so,10002) returned 11
dso.c: dlopen(/usr/local/libexec64/apache2/mod_status.so,10002) returned 12
dso.c: dlopen(/usr/local/libexec64/apache2/mod_suexec.so,10002) returned 13
dso.c: dlopen(/usr/local/libexec64/apache2/mod_unixd.so,10002) returned 14
dso.c: dlopen(/usr/local/libexec64/apache2/mod_userdir.so,10002) returned 15
dso.c: dlopen(/usr/local/libexec64/apache2/libphp5.so,10002) returned 16
ezt meg az error.log-ba:
dso.c: dlclose(16) returned 0 errno=0: Error 0
dso.c: dlclose(15) returned 0 errno=0: Error 0
dso.c: dlclose(14) returned 0 errno=0: Error 0
dso.c: dlclose(13) returned 0 errno=0: Error 0
dso.c: dlclose(12) returned 0 errno=0: Error 0
dso.c: dlclose(11) returned 0 errno=0: Error 0
dso.c: dlclose(10) returned 0 errno=0: Error 0
dso.c: dlclose(f) returned 0 errno=0: Error 0
dso.c: dlclose(e) returned 0 errno=0: Error 0
dso.c: dlclose(d) returned 0 errno=0: Error 0
dso.c: dlclose(c) returned 0 errno=0: Error 0
dso.c: dlclose(b) returned 0 errno=0: Error 0
dso.c: dlclose(a) returned 0 errno=0: Error 0
dso.c: dlclose(9) returned 0 errno=0: Error 0
dso.c: dlclose(8) returned 0 errno=0: Error 0
dso.c: dlclose(7) returned 0 errno=0: Error 0
dso.c: dlclose(6) returned 0 errno=0: Error 0
dso.c: dlclose(5) returned 0 errno=0: Error 0
dso.c: dlclose(4) returned 0 errno=0: Error 0
dso.c: dlclose(3) returned 0 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,10002) returned 0
httpd: Syntax error on line 48 of /usr/local/etc/apache2/httpd.conf:
Cannot load /usr/local/libexec64/apache2/mod_access_compat.so into server:
rtld: 0712-001 Symbol access_compat_module was referenced
from module /usr/local/libexec64/apache2/mod_access_compat.so(),
but a runtime definition
of the symbol was not found.\nrtld: 0712-002 fatal error: exiting.
Szóval a helyzet változatlan; de ha kiszedem a PHP-t, akkor megy. Egy további gond, hogy a PHP-ból is kellene hibaüzenetek lássak.
Sőt, ha a standalone PHP-t elindítom, akkor ezt látom:
php/ext/standard: Ne éljek, nem sikerült a DL_LOAD(/usr/local/lib64/20131226-zts/imagick.so)
Nos, akkor vissza a rajzasztalhoz.
20150611.1127: Na jó, ez a hiba nem hiba, csak még nem fordítottam le ezen a gépen az ImageMagic+imagick párost... mivel a másik gépen, ahol tök jól elszórakoztam, kérték vissza az Apache-t, még PHP-nélkül is, én átmenekültem egy másik gépre, ahol persze mindent előről kezdtem...
20150611.1131: Közben legalább a debugüzenet fejlődött:
php/ext/standard/dl.c:php_load_extension:
DL_LOAD(/usr/local/lib64/20131226-zts/imagick.so) returned 0
errno=2: No such file or directory
php/ext/standard/dl.c:php_load_extension:
DL_LOAD(/home/projects/lib64/libGlobusPni.so) returned 3
errno=0: Error 0
- A hozzászóláshoz be kell jelentkezni
Nyilván semmi köze semmihez, de van még pár komponens (openssl, sqlite), ami a 'libdl' helyett a 'libc'-ből veszi a dlopen-t... Esetleg újrafordítom őket, de kezdem azt hinni, hogy nem ez a fő baj...
- A hozzászóláshoz be kell jelentkezni
Most éppen mindig rossz. A napló kedvvért újracsinálom PHP nélkül:
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,10002) returned 3
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,10002) returned 4
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,10002) returned 5
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,10002) returned 6
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,10002) returned 7
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,10002) returned 8
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,10002) returned 9
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,10002) returned a
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,10002) returned b
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,10002) returned c
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,10002) returned d
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime.so,10002) returned e
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mpm_prefork.so,10002) returned f
dso.c: dlopen(/usr/local/libexec64/apache2/mod_negotiation.so,10002) returned 10
dso.c: dlopen(/usr/local/libexec64/apache2/mod_setenvif.so,10002) returned 11
dso.c: dlopen(/usr/local/libexec64/apache2/mod_status.so,10002) returned 12
dso.c: dlopen(/usr/local/libexec64/apache2/mod_suexec.so,10002) returned 13
dso.c: dlopen(/usr/local/libexec64/apache2/mod_unixd.so,10002) returned 14
dso.c: dlopen(/usr/local/libexec64/apache2/mod_userdir.so,10002) returned 15
dso.c: dlclose(15) returned 0 errno=0: Error 0
dso.c: dlclose(14) returned 0 errno=0: Error 0
dso.c: dlclose(13) returned 0 errno=0: Error 0
dso.c: dlclose(12) returned 0 errno=0: Error 0
dso.c: dlclose(11) returned 0 errno=0: Error 0
dso.c: dlclose(10) returned 0 errno=0: Error 0
dso.c: dlclose(f) returned 0 errno=0: Error 0
dso.c: dlclose(e) returned 0 errno=0: Error 0
dso.c: dlclose(d) returned 0 errno=0: Error 0
dso.c: dlclose(c) returned 0 errno=0: Error 0
dso.c: dlclose(b) returned 0 errno=0: Error 0
dso.c: dlclose(a) returned 0 errno=0: Error 0
dso.c: dlclose(9) returned 0 errno=0: Error 0
dso.c: dlclose(8) returned 0 errno=0: Error 0
dso.c: dlclose(7) returned 0 errno=0: Error 0
dso.c: dlclose(6) returned 0 errno=0: Error 0
dso.c: dlclose(5) returned 0 errno=0: Error 0
dso.c: dlclose(4) returned 0 errno=0: Error 0
dso.c: dlclose(3) returned 0 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,10002) returned 3
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,10002) returned 4
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,10002) returned 5
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,10002) returned 6
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,10002) returned 7
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,10002) returned 8
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,10002) returned 9
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,10002) returned a
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,10002) returned b
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,10002) returned c
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,10002) returned d
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,10002) returned 3
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,10002) returned 4
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,10002) returned 5
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,10002) returned 6
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,10002) returned 7
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,10002) returned 8
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,10002) returned 9
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,10002) returned a
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,10002) returned b
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,10002) returned c
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,10002) returned d
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime.so,10002) returned e
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mpm_prefork.so,10002) returned f
dso.c: dlopen(/usr/local/libexec64/apache2/mod_negotiation.so,10002) returned 10
dso.c: dlopen(/usr/local/libexec64/apache2/mod_setenvif.so,10002) returned 11
dso.c: dlopen(/usr/local/libexec64/apache2/mod_status.so,10002) returned 12
dso.c: dlopen(/usr/local/libexec64/apache2/mod_suexec.so,10002) returned 13
dso.c: dlopen(/usr/local/libexec64/apache2/mod_unixd.so,10002) returned 14
dso.c: dlopen(/usr/local/libexec64/apache2/mod_userdir.so,10002) returned 15
Szóval így működik a load-unload-load sorozat...
Esetleg a PHP valamiféleképpen összeakaszkodik az Apache szimbóleumaival?
Talán a PHP unloadja magával ránt más komponenseket is (vö: Dugonics Titusz)?
- A hozzászóláshoz be kell jelentkezni
Note to self: bbigtoc-nak tessék utánanézni.
http://www.ibm.com/developerworks/rational/library/overview-toc-aix/
The IBM® PowerPC® architecture uses an instruction with a signed 16-bit offset for indirect address calculations. As shown in the previous example, this limits the size of the TOC to 64k bytes. Therefore, a maximum of 16k entries can be located in the TOC in 32-bit mode (addresses are 4 bytes) and 8k in 64-bit mode (addresses are 8 bytes). If a program contains more TOC entries than the TOC can hold, the linker will abort and report TOC overflow. In this case, an alternative mechanism must be used.
20150611.1634: Namostan a -Wl,-bbigtoc a httpd linkelésénél jó eséllyel segítene (vagy legalábbis változtatna) valamit, de akkor már azt a -qpic=large dolgot is meg kellene oldani, hogy a linkernek kevesebbet kelljen haxolnia a programon (benne van a linkelt cikkben, hogy mit csinál, nem érdemes étkezés után olvasni).
Egyes leírások olyasmit sugallnak, hogy a -fPIC vagy -fPIE ilyen hatású, szemben a -fpic vagy -fpie opciókkal, amik kicsike toc-hoz ajánlottak.
- A hozzászóláshoz be kell jelentkezni
Azt is megmondhatná valaki, hogy a /usr/local/sbin/envvars című fájlban mit akar kifejezni ez a rész:
LDR_CNTRL="MAXDATA=0x80000000" ; export LDR_CNTRL ; AIXTHREAD_SCOPE=S ; export A
IXTHREAD_SCOPE ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG ; AIXT
HREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG ; AIXTHREAD_COND_DEBUG=OF
F ; export AIXTHREAD_COND_DEBUG ; SPINLOOPTIME=1000 ; export SPINLOOPTIME ; YIEL
DLOOPTIME=8 ; export YIELDLOOPTIME ; MALLOCMULTIHEAP=considersize,heaps:8 ; expo
rt MALLOCMULTIHEAP
20150611.2047 itt az írják, hogy
For example, use the following command to run the a.out program with 8 segments reserved for the data area:
LDR_CNTRL=MAXDATA=0x80000000 a.out
Ebben a mesében a 'szegmens' 256 MB memóriatartományt jelent, 16 szegmens alkotja a 4GB címtartományt. Mármint 32 biten.
- A hozzászóláshoz be kell jelentkezni
Még meg van a derék probléma, -fPIC és -bbigtoc oda se neki.
Egyelőre félreteszem, csak még egy nyomoznivaló: mit jelent itt a dlopen második paramétere:
dso.c: dlopen(/usr/local/libexec64/apache2/libphp5.so,10002) returned 16
dlfcn.h:
#define RTLD_NOW 0x00000002 /* Load object and dependents now. */
#define RTLD_GLOBAL 0x00010000 /* Make symbols in this module
visible to other dlopens. */
Mondjuk ebben nem látok semmi rosszat...
- A hozzászóláshoz be kell jelentkezni
Fokoztam a debug-kiírást, ez lett a jutalmam:
dso.c: dlopen(/usr/local/libexec64/apache2/libphp5.so,0x10002) returned 16
errno=12: Not enough space
szóval már az első betöltés során volt egy kis gond, de az még megoldódott, hiszen a return value nemnulla
a másodiknál pedig:
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,0x10002) returned 0
errno=8: Exec format error
- A hozzászóláshoz be kell jelentkezni
Note to self: a debug-kiíratásokkal terhelt dso.c-t át kellene lőni arra az 5.2-es gépre, ahol megy a 64-bites... már csak önbosszantásból is;p
- A hozzászóláshoz be kell jelentkezni
NTS: loadquery szubrutint meg kellene nézni, azzal lehetne tájékozódni betöltött komponensekről...
Meg a svmon programot kipróbálni...
És ha jópofizni akarok: export LDR_CNTRL="$LDR_CNTRL"@IGNOREUNLOAD
Meg mondjuk az a MAXDATA, ami 32-biten 'bazinagy' volt, az 64-bites lehet, hogy kevés...
Azt írja az újság, hogy 32-biten az összes sharedlib kódja a 'D' szegmensben lesz, az adatterületek meg a 'F'-ben.
64-biten viszont terabyte-ok állnak rendelkezésre (legalábbis címtartományban), tehát sose lesz ENOMEM. Kivéve most, a libphp5.so betöltésekor. Vajon az ulimit valamelyik adata kapcsolatban van ezzel?
+1: slibclean-t esetleg ki kellene próbálni, szinte biztos, hogy való valamire...
- A hozzászóláshoz be kell jelentkezni
a működő állapot (5.3.0.0):
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,0x10002) returned 4 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,0x10002) returned 5 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,0x10002) returned 6 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,0x10002) returned 7 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,0x10002) returned 8 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,0x10002) returned 9 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,0x10002) returned a errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,0x10002) returned b errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,0x10002) returned c errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,0x10002) returned d errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,0x10002) returned e errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime.so,0x10002) returned f errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mpm_prefork.so,0x10002) returned 10 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_negotiation.so,0x10002) returned 11 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_setenvif.so,0x10002) returned 12 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_status.so,0x10002) returned 13 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_suexec.so,0x10002) returned 14 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_unixd.so,0x10002) returned 15 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_userdir.so,0x10002) returned 16 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/libphp5.so,0x10002) returned 17 errno=12: Not enough space
---innentől a /var/log/apache2/error_log-ba ---
dso.c: dlclose(17) returned 0 errno=0: Error 0
dso.c: dlclose(16) returned 0 errno=0: Error 0
dso.c: dlclose(15) returned 0 errno=0: Error 0
dso.c: dlclose(14) returned 0 errno=0: Error 0
dso.c: dlclose(13) returned 0 errno=0: Error 0
dso.c: dlclose(12) returned 0 errno=0: Error 0
dso.c: dlclose(11) returned 0 errno=0: Error 0
dso.c: dlclose(10) returned 0 errno=0: Error 0
dso.c: dlclose(f) returned 0 errno=0: Error 0
dso.c: dlclose(e) returned 0 errno=0: Error 0
dso.c: dlclose(d) returned 0 errno=0: Error 0
dso.c: dlclose(c) returned 0 errno=0: Error 0
dso.c: dlclose(b) returned 0 errno=0: Error 0
dso.c: dlclose(a) returned 0 errno=0: Error 0
dso.c: dlclose(9) returned 0 errno=0: Error 0
dso.c: dlclose(8) returned 0 errno=0: Error 0
dso.c: dlclose(7) returned 0 errno=0: Error 0
dso.c: dlclose(6) returned 0 errno=0: Error 0
dso.c: dlclose(5) returned 0 errno=0: Error 0
dso.c: dlclose(4) returned 0 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_access_compat.so,0x10002) returned 4 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_alias.so,0x10002) returned 5 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_auth_basic.so,0x10002) returned 6 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authn_core.so,0x10002) returned 7 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_authz_core.so,0x10002) returned 8 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_autoindex.so,0x10002) returned 9 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_cgid.so,0x10002) returned a errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_dir.so,0x10002) returned b errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_env.so,0x10002) returned c errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_log_config.so,0x10002) returned d errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime_magic.so,0x10002) returned e errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mime.so,0x10002) returned f errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_mpm_prefork.so,0x10002) returned 10 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_negotiation.so,0x10002) returned 11 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_setenvif.so,0x10002) returned 12 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_status.so,0x10002) returned 13 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_suexec.so,0x10002) returned 14 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_unixd.so,0x10002) returned 15 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/mod_userdir.so,0x10002) returned 16 errno=0: Error 0
dso.c: dlopen(/usr/local/libexec64/apache2/libphp5.so,0x10002) returned 17 errno=0: Error 0
[Fri Jun 12 10:39:41.147667 2015] [mpm_prefork:notice] [pid 282758] AH00163: Apache/2.4.7 (Unix) PHP/5.6.4 configured -- resuming normal operations
[Fri Jun 12 10:39:41.147810 2015] [core:notice] [pid 282758] AH00094: Command line: '/usr/local/sbin/httpd'
- A hozzászóláshoz be kell jelentkezni
7.1-en is hasonló; bár a legvégén, a php másodszori betöltésénél van ugyan egy kis érdekesség:
dso.c: dlopen(/home/user/libexec64/apache2/mod_alias.so,0x10002)
returned 1b errno=0
: Error 0
dso.c: dlopen(/home/user/libexec64/apache2/libphp5.so,0x10002)
returned 1c errno=8: Exec format error
[Fri Jun 12 12:33:06.185831 2015] [mpm_prefork:notice] [pid 10092698] AH00163: Apache/2.
4.7 (Unix) PHP/5.6.4 configured -- resuming normal operations
[Fri Jun 12 12:33:06.185929 2015] [core:notice] [pid 10092698] AH00094: Command line: '/
home/user/bin/httpd'
- A hozzászóláshoz be kell jelentkezni
Valószínűleg semmi köze semmihez, de mi az a fc_softc, amit a libphp az egyik gépen exportál (6.x), a másikon meg nem (5.x)?
/* net/if_arp.h */
struct fc_softc {
struct arpcom fc_ac; /* FCS common part */
struct ndd *nddp; /* returned from NS */
int(*efcnet_arp_fct)
(struct ndd *, struct mbuf *); /* efcnet_arp function address */
} *fc_softc;
Esetleg hiányoztak a programozóiskolából, amikor az 'extern' kulcsszót tanították?
Szerk: A gcc-s srácok szerint 'typedef' kell az elejére (lásd az include-fixed környvtárban).
- A hozzászóláshoz be kell jelentkezni
Kezdem azt hinni, hogy ez a probléma egy OS-patch/verzióváltás során fog megszűnni, addig megoldom suttyógyerek módjára...
'configure' és 'make' közé a 'do.64' scriptbe:
### AIX6-on jópofa kínlódást látunk a dlopen(libphp5.so-nál)
PHPMOD=/usr/local/libexec64/apache2/libphp5.so
if [ $(uname -v) = 6 -a -f "$PHPMOD" ]; then
sed_repl 's;$(PROGRAM_LDADD)$;$(PROGRAM_LDADD) '"$PHPMOD"';' build/program.mk
fi
Így persze 'a rest háromszor fárad' alapelv fog érvényesülni: build apache, build php, build apache
- A hozzászóláshoz be kell jelentkezni