On Mon, Sep 12, 2016 at 02:57:01PM -0500, Joe Love wrote:
> 
> > On Sep 9, 2016, at 4:34 PM, Joe Love <[email protected]> wrote:
> > 
> > Hi,
> > 
> > I have a linux binary I’m trying to run on a 12-CURRENT machine with the 
> > linux_base-c7 (64-bit) port.
> > 
> > When trying to run it, it starts up and then spits out this error:
> > shm_semaphores_init: semctl init error: Bad address - trying again
> > 
> > I’m guessing that it’s reaching the end of the switch statement in 
> > sys/compat/linux/linux_ipc.c’s linux_semctl(…) function and getting an 
> > EINVAL result.  That’s a guess, however, as I don’t know enough about 
> > debugging at this level in order to tell what it’s actually doing.
> > 
> > Can anyone tell me how to get the results of the linux_msg() call at the 
> > end of the function to find out what ipc type it’s trying to utilize, and 
> > with a little luck maybe get a patch created to support whatever operation 
> > it’s trying?
> > 
> > Thanks,
> > -Joe
> > 
> 
> A little further explanation (since I failed to give it earlier): I have two 
> linux game servers that do this, “7 Days to Die” (7dtd) and “Unturned.”  
> Based on the first dtrace probe I tried (entry), it seems that 7dtd might be 
> easier to understand.  Obviously I don’t have access to game sources.
> 
> I did a little digging with dtrace, though my knowledge of dtrace is all new 
> as of this experience.
> 
> /* my dtrace probe file, semprobe.d */
> fbt:linux:linux_semctl:entry,
> fbt:linux64:linux_semctl:entry
> {
>       /* args->cmd & ~LINUX_IPC_64 .. LINUX_IPC_64 = 0x0100 */
>               printf("%s (%d, %d, %d, %d)", probefunc, args[1]->cmd, 
> args[1]->cmd & ~0x0100, args[1]->semid, args[1]->arg.val);
> }
> fbt:kernel:kern_semctl:entry
> {
>               printf("%s  (%d, %d, %d, %d)", probefunc, args[3], args[3], 
> args[1], args[4]->val);
> }
> fbt:kernel:kern_semctl:return
> {
>               printf("%s  (%d, %d)", probefunc, args[1], errno);
> }
> 
> fbt:linux:linux_semctl:return,
> fbt:linux64:linux_semctl:return
> {
>               printf("%s (%d, %d)\n", probefunc, args[1], errno);
> }
> I ran that with "dtrace -n semprobe.d”
> 
> When I ran the 7dtd server, dtrace proceeded to spit out this information 
> (while 7dtd spat out it’s error in my first email):
> dtrace: script 'semprobe.d' matched 6 probes
> CPU     ID                    FUNCTION:NAME
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952369158, 0)
>  21  37620                kern_semctl:entry kern_semctl  (9, 9, 952369158, 
> -11936)
>  21  37621               kern_semctl:return kern_semctl  (14, 0)
>  21  63001              linux_semctl:return linux_semctl (14, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952369158, 0)
>  21  37620                kern_semctl:entry kern_semctl  (0, 0, 952369158, 
> 1876522240)
>  21  37621               kern_semctl:return kern_semctl  (0, 14)
>  21  63001              linux_semctl:return linux_semctl (0, 14)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952434694, 0)
>  21  37620                kern_semctl:entry kern_semctl  (9, 9, 952434694, 
> -11936)
>  21  37621               kern_semctl:return kern_semctl  (14, 0)
>  21  63001              linux_semctl:return linux_semctl (14, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952434694, 0)
>  21  37620                kern_semctl:entry kern_semctl  (0, 0, 952434694, 
> 1876522240)
>  21  37621               kern_semctl:return kern_semctl  (0, 14)
>  21  63001              linux_semctl:return linux_semctl (0, 14)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952500230, 0)
>  21  37620                kern_semctl:entry kern_semctl  (9, 9, 952500230, 
> -11936)
>  21  37621               kern_semctl:return kern_semctl  (14, 0)
>  21  63001              linux_semctl:return linux_semctl (14, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952500230, 0)
>  21  37620                kern_semctl:entry kern_semctl  (0, 0, 952500230, 
> 1876522240)
>  21  37621               kern_semctl:return kern_semctl  (0, 14)
>  21  63001              linux_semctl:return linux_semctl (0, 14)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952565766, 0)
>  21  37620                kern_semctl:entry kern_semctl  (9, 9, 952565766, 
> -11936)
>  21  37621               kern_semctl:return kern_semctl  (14, 0)
>  21  63001              linux_semctl:return linux_semctl (14, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952565766, 0)
>  21  37620                kern_semctl:entry kern_semctl  (0, 0, 952565766, 
> 1876522240)
>  21  37621               kern_semctl:return kern_semctl  (0, 0)
>  21  63001              linux_semctl:return linux_semctl (0, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952631302, 0)
>  21  37620                kern_semctl:entry kern_semctl  (9, 9, 952631302, 
> -11936)
>  21  37621               kern_semctl:return kern_semctl  (14, 0)
>  21  63001              linux_semctl:return linux_semctl (14, 0)
> 
>  21  63000               linux_semctl:entry linux_semctl (0, 0, 952631302, 0)
>  21  37620                kern_semctl:entry kern_semctl  (0, 0, 952631302, 
> 1876522240)
>  21  37621               kern_semctl:return kern_semctl  (0, 0)
>  21  63001              linux_semctl:return linux_semctl (0, 0)
> (and repeated the last 2 ’sets', with other semaphore ID’s, always 
> incrementing)
> 
> 
> I’m hoping someone can find fault with my assessment, because I don't 
> understand why args->cmd seems to go from LINUX_IPC_RMID (0) to bsd’s SETALL 
> (9).
> 
> Anyone have thoughts on what to check, or maybe what is going on?
>
hi, could you please do:
ktrace -di /path/to/u/bin and then
kdump -HAR -m64 > xxxx.out
and then send me xxxx.out, thanks
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-emulation
To unsubscribe, send any mail to "[email protected]"

Reply via email to