#fixed code
                                public BlockInfo request(long start, long end, long split) {
        lock.lock();
        this.startTime = TimeService.currentTimeMillis();
        requesting = true;
        hashesMap.clear();
        calcMap.clear();
        this.start = start;
        this.end = end;
        this.split = split;
        GetBlocksHashRequest event = new GetBlocksHashRequest(start, end, split);
        nodeIdList = this.eventBroadcaster.broadcastAndCache(event, false);
        if (nodeIdList.isEmpty()) {
            Log.error("get best height from net faild!");
            lock.unlock();
            return null;
        }
        return this.getBlockInfo();
    }
#vulnerable code 
                                public BlockInfo request(long start, long end, long split) {
        lock.lock();
        this.startTime = TimeService.currentTimeMillis();
        requesting = true;
        hashesMap.clear();
        calcMap.clear();
        this.start = start;
        this.end = end;
        this.split = split;
        GetBlocksHashRequest event = new GetBlocksHashRequest(start, end, split);
        nodeIdList = this.eventBroadcaster.broadcastAndCache(event, false);
        if (nodeIdList.isEmpty()) {
            Log.error("get best height from net faild!");
            lock.unlock();
            throw new NulsRuntimeException(ErrorCode.NET_MESSAGE_ERROR, "broadcast faild!");
        }
        return this.getBlockInfo();
    } 
                            #location 15 
                            #vulnerability type THREAD_SAFETY_VIOLATION