Process hosting net named pipe binding hangs and stops receiving further requests

I have a process (windows service) A and process B (console app).

B exposes WCF endpoint with netNamedPipeBinding.

On its service Contract:

        SessionMode = SessionMode.Allowed,
        CallbackContract = typeof(ICallback))]
        public interface IServiceManager
            [OperationContract(IsOneWay = true)]
            void GetSomething(List<string> strs, string id);

Implementation as:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode =ConcurrencyMode.Multiple)]
    public class ServiceManager : IServiceManager
        public void GetSomething(List<string> strs, string id)

Callback Contract as:

public interface ICallback
        [OperationContract(IsOneWay = true)]
        void Report(List<Response> Response, string id);

The method (GetSomething) in this service will call a remote procedure and returns the reply to A through a call back contract. and operation contract is set to OneWay = true in both callback and service.

Process A makes call to process B regularly (100 calls per minute) and receives response from B through call back contract.

The problem is: This setup works fine but after some requests (1000 - 2000) Process B is running but stops receiving any calls from A or any other process and do not even throw error because the call is oneway. (the method in process B do not invoke even if called by A)

It is also not like process B is already processing old requests. It executed all and called the callback for all previous requests.

All the calls sent through one connection. the connection is created by:

_factory = new DuplexChannelFactory<IServiceManager>(context, binding, address);
                _serviceManager = _factory.CreateChannel();

connection opens only at one time and all the requests goes through this channel only and it never opens second time and not even gets faulted.

When B stops receiving all the requests I do ctrl+C to stop the process in console/powershell, it starts receiving all the requests that are queued.

Please note there is no long running process happening in B, it just stops picking up new requests and after pressing ctrl+c it picks them all.